/*!
 * @file filter_test.cpp
 *
 * @author Andrzej Ciarkowski <mailto:andrzej.ciarkowski@gmail.com>
 */

#include "filter_test.h"
#include <dsp++/filter.h>
#include <dsp++/float.h>
#include <dsp++/simd.h>

const float in[] = {0.0519835390150547027587891,0.0983107760548591613769531,-1.43392241001129150390625,0.468489587306976318359375,0.3444426059722900390625,0.490921586751937866210938,-0.413305729627609252929688,0.0346787385642528533935547,-0.0848314315080642700195312,0.62817156314849853515625,0.127602145075798034667969,-0.7727935314178466796875,1.431363582611083984375,-1.2295396327972412109375,-1.38972628116607666015625,-1.17881858348846435546875,-1.4060056209564208984375,-1.097560882568359375,0.0806045085191726684570312,1.8615539073944091796875,-0.34088838100433349609375,1.669760227203369140625,-0.29529631137847900390625,0.151921659708023071289062,2.01970577239990234375,0.338179677724838256835938,1.4398021697998046875,-0.388313859701156616210938,-1.472661495208740234375,-0.584733664989471435546875,0.596652984619140625,-2.15467071533203125,0.100025385618209838867188,-0.425098240375518798828125,0.000424166093580424785614014,-0.90946805477142333984375,-0.844160020351409912109375,0.205709442496299743652344,1.11414015293121337890625,0.191271215677261352539062,0.89698314666748046875,0.917069911956787109375,-0.87563097476959228515625,-0.72571408748626708984375,0.8929107189178466796875,-0.397684007883071899414062,0.00486457487568259239196777,-0.959506511688232421875,-1.734462261199951171875,1.1477367877960205078125,-0.175794988870620727539062,-1.48741471767425537109375,-0.903969705104827880859375,0.75055217742919921875,-0.0347129963338375091552734,0.454735279083251953125,-1.0018589496612548828125,-0.906838834285736083984375,-0.91524469852447509765625,0.983295023441314697265625,2.195284366607666015625,0.485093533992767333984375,-0.6695702075958251953125,-0.225742131471633911132812,0.253088027238845825195312,-0.414076268672943115234375,-2.2193605899810791015625,0.142802193760871887207031,-1.3418014049530029296875,1.38122951984405517578125,0.356077492237091064453125,0.964861392974853515625,-1.0345160961151123046875,-1.16839230060577392578125,0.348437696695327758789062,-1.015879154205322265625,0.9454171657562255859375,0.110665537416934967041016,-0.8965227603912353515625,0.013499108143150806427002,0.66532266139984130859375,-0.586069524288177490234375,-0.663049280643463134765625,1.94110929965972900390625,-0.282924979925155639648438,-0.489227771759033203125,0.778746068477630615234375,-0.991149485111236572265625,-0.957114756107330322265625,1.75152790546417236328125,0.3698732852935791015625,-0.994955003261566162109375,1.27542245388031005859375,0.8425314426422119140625,-1.99918472766876220703125,-0.638518273830413818359375,-0.624772131443023681640625,1.48423445224761962890625,1.59912478923797607421875,1.04370415210723876953125,0.0354072228074073791503906,0.342545598745346069335938,-0.0726161524653434753417969,-2.7476279735565185546875,-0.753986835479736328125,1.232922077178955078125,-2.498858928680419921875,1.41528403759002685546875,0.000374746305169537663459778,0.283460825681686401367188,0.387970745563507080078125,-0.00377467391081154346466064,1.0898435115814208984375,-0.344244986772537231445312,-0.532878458499908447265625,-1.61131227016448974609375,0.262129127979278564453125,1.4945774078369140625,-0.1275198459625244140625,-1.48781192302703857421875,-0.160379678010940551757812,1.47996008396148681640625,-0.497648924589157104492188,0.0136702433228492736816406,-1.318931102752685546875,0.0383985042572021484375,-0.36704528331756591796875,-0.273127287626266479492188,0.118014983832836151123047,-0.78582274913787841796875,0.26088225841522216796875,0.00989283062517642974853516,-1.0550615787506103515625,-0.82806313037872314453125,-1.08970081806182861328125,0.325428158044815063476562,-1.65573108196258544921875,0.67952382564544677734375,-1.5794589519500732421875,-0.896226346492767333984375,0.564834535121917724609375,0.441808253526687622070312,1.86370241641998291015625,-0.200015261769294738769531,-0.701186835765838623046875,0.960499227046966552734375,-2.105144977569580078125,0.204875573515892028808594,0.902800858020782470703125,-0.895418226718902587890625,0.92526376247406005859375,0.746282875537872314453125,-0.256231844425201416015625,-0.179044157266616821289062,0.736645221710205078125,0.957998752593994140625,0.250259101390838623046875,1.19547307491302490234375,0.745553195476531982421875,0.720254600048065185546875,-1.27558887004852294921875,0.16838836669921875,1.15603351593017578125,-1.37322294712066650390625,0.431607097387313842773438,-0.2302496433258056640625,-0.557229936122894287109375,1.99923610687255859375,1.1392323970794677734375,1.25498068332672119140625,0.931541979312896728515625,-0.82950627803802490234375,-0.587544262409210205078125,0.75171363353729248046875,-0.218231663107872009277344,-1.909742832183837890625,-0.294979721307754516601562,-0.98931157588958740234375,-2.2981040477752685546875,0.60292541980743408203125,0.7019345760345458984375,0.464262783527374267578125,0.0260195359587669372558594,1.083919048309326171875,0.644237041473388671875,-1.94543588161468505859375,1.04012644290924072265625,-1.50448811054229736328125,1.00695049762725830078125,-0.185456305742263793945312,-0.50279390811920166015625,-0.480185329914093017578125,0.974519789218902587890625,0.7611463069915771484375,0.501329720020294189453125,-0.191234901547431945800781,-1.02636015415191650390625,-0.3948705196380615234375,-0.195910587906837463378906,0.83296239376068115234375,-0.6595199108123779296875,-1.38498783111572265625,1.6007688045501708984375,0.481887131929397583007812,-0.8790910243988037109375,1.2561798095703125,1.59590244293212890625,1.388375759124755859375,0.501272261142730712890625,1.55631077289581298828125,-1.17219257354736328125,1.843996524810791015625,1.02105629444122314453125,-0.206906273961067199707031,1.89772832393646240234375,-1.0355322360992431640625,1.45216619968414306640625,0.339065730571746826171875,0.864633977413177490234375,0.0702400282025337219238281,-0.211273401975631713867188,1.06923663616180419921875,-1.5412895679473876953125,-0.481734454631805419921875,-0.666445672512054443359375,-0.0967006683349609375,-0.88742983341217041015625,0.354755491018295288085938,-1.05872058868408203125,-0.310961633920669555664062,-0.180336043238639831542969,1.2638576030731201171875,1.3571903705596923828125,1.10826432704925537109375,-0.431782692670822143554688,0.6468346118927001953125,-0.388741821050643920898438,-0.0215326976031064987182617,-0.0874161943793296813964844,1.5266811847686767578125,-0.521002292633056640625,0.668087661266326904296875,1.63782274723052978515625,0.677146017551422119140625,2.8127467632293701171875,-0.141328200697898864746094,0.920926153659820556640625,-0.0304565839469432830810547,0.40521633625030517578125,0.629320323467254638671875,-0.727176249027252197265625,0.324609279632568359375,0.333916634321212768554688,1.04137766361236572265625,-0.325356006622314453125,-2.034451961517333984375,-0.0210760105401277542114258,0.630379199981689453125,0.332539081573486328125,1.07985532283782958984375,0.697901546955108642578125,-0.0332117751240730285644531,-0.145651593804359436035156,0.0894334465265274047851562,-0.352666676044464111328125,0.520996570587158203125,-0.84587466716766357421875,-0.0951519086956977844238281,-0.0849485322833061218261719,1.84478700160980224609375,0.790941894054412841796875,-1.58352410793304443359375,1.1526043415069580078125,0.6201789379119873046875,-0.92104089260101318359375,-0.4999058246612548828125,-0.185297951102256774902344,-0.8666095733642578125,-0.596571147441864013671875,0.121147602796554565429688,-1.0854613780975341796875,0.114814691245555877685547,-1.0562627315521240234375,-0.29779183864593505859375,0.396242678165435791015625,-0.124624863266944885253906,-1.29888474941253662109375,-0.40105259418487548828125,-0.610598027706146240234375,0.8419363498687744140625,0.285728007555007934570312,-1.20487511157989501953125,2.01991939544677734375,0.539350688457489013671875,-0.8506343364715576171875,-1.592098236083984375,-0.695016086101531982421875,-1.0352528095245361328125,0.581140816211700439453125,0.89915430545806884765625,-0.07891547679901123046875,-0.638698041439056396484375,0.422191441059112548828125,0.396646708250045776367188,-0.420790404081344604492188,-1.00611913204193115234375,0.0654262602329254150390625,-1.07182562351226806640625,0.697381496429443359375,0.626608371734619140625,2.0859444141387939453125,0.949481666088104248046875,0.406155079603195190429688,-0.36944806575775146484375,0.639667510986328125,1.3363208770751953125,0.51238155364990234375,0.50877749919891357421875,-0.194369360804557800292969,1.55211532115936279296875,-0.760924279689788818359375,-0.78639984130859375,-1.78847873210906982421875,-0.33775150775909423828125,1.070838451385498046875,-0.94927465915679931640625,-2.118378162384033203125,-1.64044249057769775390625,-1.1730747222900390625,0.0792027041316032409667969,-0.705684006214141845703125,0.710921347141265869140625,-0.987967789173126220703125,0.329774707555770874023438,1.15571749210357666015625,-0.126489177346229553222656,-0.396379202604293823242188,-0.29049777984619140625,2.22977542877197265625,-1.076260089874267578125,-1.26988685131072998046875,-0.3282439708709716796875,-0.217612966895103454589844,0.304466307163238525390625,-0.63756215572357177734375,-0.675750255584716796875,-0.786223590373992919921875,2.2243974208831787109375,0.857707202434539794921875,-0.387319296598434448242188,2.9203898906707763671875,0.459517806768417358398438,-0.84974956512451171875,0.0914294198155403137207031,1.359736919403076171875,-0.411399304866790771484375,-1.96276628971099853515625,0.723827838897705078125,-0.376613616943359375,-0.57938158512115478515625,1.017729282379150390625,-1.53167998790740966796875,0.0963650271296501159667969,0.3730428218841552734375,0.92862987518310546875,0.160315021872520446777344,0.27119433879852294921875,-0.6378281116485595703125,-0.3515369892120361328125,-0.443396061658859252929688,-0.274372607469558715820312,-0.599173843860626220703125,-1.25939524173736572265625,-0.209488973021507263183594,0.213797375559806823730469,-1.41940748691558837890625,-0.0277021378278732299804688,-0.70795238018035888671875,1.9437587261199951171875,0.66075193881988525390625,0.48991811275482177734375,-0.0624178536236286163330078,0.195382088422775268554688,0.85976445674896240234375,-0.85903775691986083984375,2.4452092647552490234375,1.74247086048126220703125,0.390587329864501953125,-0.6956522464752197265625,1.03464925289154052734375,0.912684917449951171875,0.19937813282012939453125,0.19666194915771484375,0.486054450273513793945312,-1.74422395229339599609375,1.0517003536224365234375,-0.558723866939544677734375,-0.0442780293524265289306641,-1.36898791790008544921875,-0.0994589403271675109863281,-0.71665370464324951171875,-1.07519137859344482421875,0.99267184734344482421875,0.17834842205047607421875,1.29817831516265869140625,0.7434322834014892578125,0.246084660291671752929688,2.0226209163665771484375,0.8836591243743896484375,-0.0912036970257759094238281,-0.283052653074264526367188,-0.53889858722686767578125,0.495249927043914794921875,-0.228666394948959350585938,-0.0397722274065017700195312,-0.102166883647441864013672,-1.374244213104248046875,1.15007603168487548828125,-1.73235309123992919921875,0.849911510944366455078125,1.4128844738006591796875,-0.726764202117919921875,0.264403611421585083007812,-2.618000507354736328125,-1.63510036468505859375,-1.35966908931732177734375,1.55695641040802001953125,0.141924038529396057128906,-0.62679421901702880859375,-0.75568258762359619140625,-0.71304047107696533203125,0.47250080108642578125,-0.584750473499298095703125,0.689541637897491455078125,-0.799614012241363525390625,-1.653382778167724609375,1.224357128143310546875,-0.6928012371063232421875,1.22363376617431640625,-0.3869607448577880859375,-0.788545787334442138671875,0.897513687610626220703125,-0.0750811547040939331054688,1.46356070041656494140625,-0.386349111795425415039062,0.618223667144775390625,-0.89328861236572265625,-0.0572190061211585998535156,1.864572048187255859375,-0.491529911756515502929688,0.430232375860214233398438,0.960358798503875732421875,-0.478244930505752563476562,-1.4917171001434326171875,1.95050144195556640625,-0.0487393401563167572021484,1.09367477893829345703125,-0.192465692758560180664062,-0.76481735706329345703125,-0.353751480579376220703125,0.874460279941558837890625,-0.791256964206695556640625,0.41179525852203369140625,-0.376953572034835815429688,-0.330326735973358154296875,0.99876487255096435546875,-0.817412853240966796875,2.1037533283233642578125,-0.0601274184882640838623047,0.995851993560791015625,-1.1838810443878173828125,-0.602940499782562255859375,0.0997601598501205444335938,0.46484363079071044921875,0.169791132211685180664062,0.465682804584503173828125,1.38770580291748046875,-0.40673339366912841796875,-0.110449440777301788330078,0.419968932867050170898438,-0.98140609264373779296875,0.04321765899658203125,-1.4496901035308837890625,0.379643470048904418945312,0.744178235530853271484375,0.513360440731048583984375,1.1962559223175048828125,0.164304867386817932128906,-1.85561907291412353515625,0.581699848175048828125,0.394888192415237426757812,-0.81281411647796630859375,-0.390700310468673706054688,0.23245108127593994140625,0.641355693340301513671875,-0.0959349796175956726074219,0.436242640018463134765625,-0.138302341103553771972656,-0.396141350269317626953125,-1.68806934356689453125,1.9913780689239501953125,-0.681494891643524169921875,-1.43433201313018798828125,-0.685668528079986572265625,-0.6405999660491943359375,-2.1721346378326416015625,-0.0505770370364189147949219,0.6407487392425537109375,0.210774019360542297363281,-0.71236646175384521484375,0.3747556209564208984375,2.938976287841796875,-1.58977258205413818359375,-0.106171451508998870849609,-0.909269630908966064453125,0.494044452905654907226562,-1.34834563732147216796875,0.317028522491455078125,0.34807240962982177734375,-0.00897968281060457229614258,3.0420777797698974609375,0.403895914554595947265625,1.51238000392913818359375,0.198499664664268493652344,2.5790922641754150390625,-0.318128079175949096679688,2.6793506145477294921875,0.4561984539031982421875,0.102019675076007843017578,-0.495238333940505981445312,-0.731393992900848388671875,0.0292218625545501708984375,-0.0224111713469028472900391,0.50404751300811767578125,-0.376214057207107543945312,0.0425296910107135772705078,-0.754967153072357177734375,-1.264842510223388671875,0.374993711709976196289062,1.8829596042633056640625,-0.365152299404144287109375,-0.594353377819061279296875,1.6527879238128662109375,0.311750739812850952148438,0.125697553157806396484375,-0.135308325290679931640625,-0.640606224536895751953125,-1.15316450595855712890625,-0.857982099056243896484375,-0.833003342151641845703125,-1.78974044322967529296875,0.252029240131378173828125,-0.206956163048744201660156,0.95052731037139892578125,0.0340504720807075500488281,-0.305252552032470703125,-0.115045420825481414794922,0.74177300930023193359375,2.16544818878173828125,0.426089972257614135742188,-0.52207553386688232421875,0.364248573780059814453125,0.929060041904449462890625,-1.66453707218170166015625,-0.176622897386550903320312,0.391553699970245361328125,2.3274013996124267578125,-0.104184873402118682861328,1.71366012096405029296875,0.0918681398034095764160156,-0.385411083698272705078125,-0.0108497487381100654602051,1.22004878520965576171875,-0.419241696596145629882812,0.7083618640899658203125,0.856999933719635009765625,-1.2128317356109619140625,-2.3619825839996337890625,-1.28142058849334716796875,0.688478648662567138671875,2.1333789825439453125,-1.59512889385223388671875,1.5870358943939208984375,-0.15758955478668212890625,1.20882761478424072265625,1.44023191928863525390625,-1.717992305755615234375,-1.7476236820220947265625,0.358185619115829467773438,0.798908412456512451171875,2.597783565521240234375,0.822399318218231201171875,0.374572902917861938476562,-0.206175401806831359863281,0.449623376131057739257812,-0.595381677150726318359375,-0.0859704092144966125488281,0.774708211421966552734375,1.21437418460845947265625,-2.5500843524932861328125,0.59465062618255615234375,0.216644927859306335449219,-1.2277696132659912109375,-0.866610825061798095703125,1.38068974018096923828125,-0.4364612102508544921875,-2.44091033935546875,-1.0313737392425537109375,-0.70303857326507568359375,-1.00459384918212890625,-0.8991158008575439453125,-0.318546622991561889648438,0.0574690550565719604492188,1.218738079071044921875,1.13424217700958251953125,0.55823552608489990234375,1.4843728542327880859375,-1.165869235992431640625,0.157932072877883911132812,0.249890863895416259765625,-0.889984428882598876953125,0.449651271104812622070312,-1.7262136936187744140625,0.62525999546051025390625,-0.122782729566097259521484,-0.9775264263153076171875,1.77216231822967529296875,0.5582172870635986328125,-2.8010151386260986328125,0.81650292873382568359375,0.0515303350985050201416016,-1.81765830516815185546875,0.90275752544403076171875,-0.823292076587677001953125,-0.0899871066212654113769531,2.051399707794189453125,0.00744403479620814323425293,-0.718512594699859619140625,0.446070998907089233398438,0.80366790294647216796875,-0.76612758636474609375,-0.448332458734512329101562,0.100149922072887420654297,0.186814859509468078613281,0.0411143675446510314941406,-0.46078777313232421875,0.248321160674095153808594,1.27772033214569091796875,0.0171694401651620864868164,0.0399580374360084533691406,-1.13245677947998046875,-1.0127506256103515625,-2.4218599796295166015625,0.804340898990631103515625,0.273365467786788940429688,0.959589421749114990234375,-0.893348395824432373046875,0.760445892810821533203125,-0.355847269296646118164062,-0.337520122528076171875,-1.592801570892333984375,-0.566532194614410400390625,0.683292806148529052734375,0.387563645839691162109375,0.231586232781410217285156,0.159246623516082763671875,-0.221633404493331909179688,-0.240651607513427734375,0.473654776811599731445312,-0.75406682491302490234375,0.8990099430084228515625,-0.370528757572174072265625,1.036548137664794921875,-0.407069742679595947265625,-1.0113527774810791015625,-0.0597905293107032775878906,0.753360807895660400390625,0.318924844264984130859375,0.61546933650970458984375,0.7821972370147705078125,0.198016628623008728027344,-0.345615535974502563476562,-0.538987696170806884765625,0.430950582027435302734375,-0.516352832317352294921875,-1.16878974437713623046875,-0.667733013629913330078125,0.664457023143768310546875,0.204991057515144348144531,1.69911420345306396484375,-0.60503232479095458984375,0.206737965345382690429688,-1.28734338283538818359375,0.383506029844284057617188,-0.102590762078762054443359,-1.5122163295745849609375,0.9613780975341796875,0.19407093524932861328125,-0.379711598157882690429688,0.77807986736297607421875,-0.7379894256591796875,0.0851343721151351928710938,0.464268594980239868164062,-1.102725505828857421875,0.979728400707244873046875,0.63887310028076171875,0.812085688114166259765625,-0.78660929203033447265625,-0.70835649967193603515625,0.403288692235946655273438,-0.655162274837493896484375,-0.608103692531585693359375,0.390182226896286010742188,-1.2198932170867919921875,-0.253959476947784423828125,-1.10599911212921142578125,1.3664848804473876953125,-0.314751893281936645507812,-0.194645598530769348144531,-0.0273797456175088882446289,0.80881023406982421875,-1.29363524913787841796875,1.07745230197906494140625,0.79891121387481689453125,-0.396449387073516845703125,1.01347446441650390625,0.70404517650604248046875,-0.225839957594871520996094,0.584231555461883544921875,-0.00196504499763250350952148,-2.7034952640533447265625,-0.812623083591461181640625,0.561994016170501708984375,-0.918159902095794677734375,0.462727963924407958984375,-1.049610137939453125,0.274612963199615478515625,-0.395863145589828491210938,0.220168322324752807617188,-0.567365705966949462890625,2.1285030841827392578125,-0.00891020055860280990600586,1.1723301410675048828125,-0.572691500186920166015625,-0.5348856449127197265625,-0.517373979091644287109375,-0.747474849224090576171875,-0.729293644428253173828125,0.0519539155066013336181641,-0.319065898656845092773438,-1.59721982479095458984375,-0.30240237712860107421875,-0.338627874851226806640625,-0.645132482051849365234375,1.9321019649505615234375,1.3648917675018310546875,0.66296660900115966796875,1.130207061767578125,0.124289788305759429931641,-0.682977855205535888671875,-0.330551654100418090820312,-0.874837338924407958984375,-1.61127948760986328125,1.9929811954498291015625,0.67502915859222412109375,-0.0411258041858673095703125,0.54319703578948974609375,-0.16144430637359619140625,0.475778549909591674804688,-1.027292728424072265625,0.242342486977577209472656,-0.7691981792449951171875,-0.85003817081451416015625,-0.376206219196319580078125,0.911843001842498779296875,0.709688007831573486328125,-1.25843775272369384765625,-0.490723043680191040039062,2.6628048419952392578125,1.0413143634796142578125,-0.238854244351387023925781,-0.426219195127487182617188,-0.0154165457934141159057617,-0.0451898686587810516357422,-0.705159366130828857421875,-0.0359417721629142761230469,2.69673442840576171875,0.95148408412933349609375,0.9166948795318603515625,-1.48292648792266845703125,1.1724321842193603515625,2.1092331409454345703125,1.1927196979522705078125,-0.361030250787734985351562,0.485987722873687744140625,-1.2639005184173583984375,-0.72189617156982421875,-0.86512792110443115234375,1.40160882472991943359375,0.562043368816375732421875,-0.283090144395828247070312,0.561218678951263427734375,-2.0417897701263427734375,0.948870837688446044921875,1.71542298793792724609375,1.81778049468994140625,0.080534875392913818359375,-1.25408685207366943359375,-0.154917314648628234863281,-1.97373676300048828125,-0.649407565593719482421875,0.398751318454742431640625,0.92525923252105712890625,-0.6941394805908203125,-0.635655105113983154296875,1.701057910919189453125,0.626721084117889404296875,0.00339291337877511978149414,0.743563234806060791015625,-0.765115559101104736328125,0.265217721462249755859375,0.7229688167572021484375,0.277557462453842163085938,-0.472627073526382446289062,0.724147021770477294921875,0.45654773712158203125,1.67119538784027099609375,0.547078311443328857421875,0.376218289136886596679688,0.419011145830154418945312,-1.7954337596893310546875,-0.860427796840667724609375,-0.753439426422119140625,0.64607346057891845703125,-0.378301888704299926757812,1.49063789844512939453125,-0.488404929637908935546875,0.104250900447368621826172,0.499690681695938110351562,2.4234268665313720703125,0.198605105280876159667969,-0.244388267397880554199219,-1.049503803253173828125,-0.935452401638031005859375,1.998041629791259765625,-0.647752463817596435546875,0.339501410722732543945312,-0.3617174625396728515625,-1.519773960113525390625,-0.324550330638885498046875,0.179436847567558288574219,0.246584862470626831054688,-1.08241879940032958984375,0.698219358921051025390625,1.49680435657501220703125,-1.21235764026641845703125,0.418997794389724731445312,-0.700957596302032470703125,2.5349462032318115234375,-1.86044514179229736328125,0.330117672681808471679688,-0.71672880649566650390625,-0.9396822452545166015625,0.112770073115825653076172,-0.223858416080474853515625,0.554912865161895751953125,-0.689959049224853515625,-0.72838866710662841796875,0.09484016895294189453125,-0.596654117107391357421875,-0.115737505257129669189453,-0.712011992931365966796875,-0.272707730531692504882812,1.25291538238525390625,0.127606242895126342773438,-0.711893737316131591796875,0.824081718921661376953125,-0.07878339290618896484375,0.936111509799957275390625,-1.43246471881866455078125,1.63483715057373046875,0.461684733629226684570312,-0.0475227758288383483886719,-0.5801665782928466796875,-1.6712052822113037109375,1.00277245044708251953125,0.509774029254913330078125,0.90476143360137939453125,-0.549016296863555908203125,-0.903209686279296875,1.6937129497528076171875,-1.2608797550201416015625,1.02614009380340576171875,0.209235459566116333007812,-0.513391792774200439453125,2.30023288726806640625,-2.069538593292236328125,-0.804360330104827880859375,-0.61548554897308349609375,-0.5831940174102783203125,-0.810069143772125244140625,-0.0569236949086189270019531,0.408800989389419555664062,0.90578734874725341796875,-0.879000723361968994140625,1.24323618412017822265625,-1.7766802310943603515625,-0.5604593753814697265625,1.47255611419677734375,-0.59111309051513671875,1.08959114551544189453125,-0.355161398649215698242188,0.4897000789642333984375,0.7228183746337890625,-0.812104880809783935546875,0.217409417033195495605469,-1.5326135158538818359375,-0.906591892242431640625,-0.176589339971542358398438,-0.0719206184148788452148438,-0.0254414901137351989746094,-0.442719250917434692382812,-0.763177692890167236328125,0.64226353168487548828125,1.5975551605224609375,-0.6203315258026123046875,-0.686018645763397216796875,0.547386467456817626953125,-0.4617311954498291015625,0.198553055524826049804688,-1.2532827854156494140625,0.629943192005157470703125,0.7315037250518798828125,0.409614533185958862304688,0.0871774405241012573242188,0.0200172550976276397705078,-0.466802626848220825195312,-0.949900925159454345703125,-0.317423254251480102539062,0.5858027935028076171875,0.0375133641064167022705078,1.03810322284698486328125,-0.135187178850173950195312,-0.0119396168738603591918945,-0.59028112888336181640625,-0.0979252159595489501953125,-0.5530736446380615234375,-0.322926938533782958984375,0.301013439893722534179688,-0.533519744873046875,-0.674196064472198486328125,0.805442750453948974609375,-1.46278095245361328125,-0.954712092876434326171875,-1.21316254138946533203125,-0.253958970308303833007812,-0.293876916170120239257812,-0.343765825033187866210938,-1.24845778942108154296875,0.148692056536674499511719,-0.275208562612533569335938,-0.258315056562423706054688,0.234748780727386474609375,1.37230098247528076171875,-0.445996791124343872070312,1.08106911182403564453125,2.073940753936767578125,-1.28632843494415283203125,-1.30119335651397705078125,1.1503007411956787109375,0.95803034305572509765625,0.680487096309661865234375,0.668949425220489501953125,-0.428171455860137939453125,0.225304380059242248535156,-0.512419760227203369140625,-1.19121897220611572265625,-0.286578655242919921875,0.4334304332733154296875,0.543933689594268798828125,-0.0277220830321311950683594,-1.6267259120941162109375,-0.90985310077667236328125,0.526708900928497314453125,0.19334125518798828125,-0.49822127819061279296875,-0.176819577813148498535156,1.60449612140655517578125,0.0310612171888351440429688,-1.02903568744659423828125,-1.21856021881103515625,-1.16346204280853271484375,-0.69561803340911865234375,-1.09210026264190673828125,1.7370007038116455078125,0.727173328399658203125,0.107458449900150299072266,-0.24290263652801513671875,-0.8829362392425537109375,1.85901463031768798828125,-0.160267755389213562011719,-0.54700863361358642578125,-0.634297847747802734375,-0.310263931751251220703125,1.66168439388275146484375,1.0476562976837158203125,-0.216911107301712036132812,0.526469647884368896484375,1.02884197235107421875,-0.6731755733489990234375,-1.79217433929443359375,0.838463306427001953125,-1.71555531024932861328125,0.0544752106070518493652344,-1.1194946765899658203125,0.970285594463348388671875,0.0866380631923675537109375,0.495437443256378173828125,2.01727581024169921875,0.5788104534149169921875,0.65519106388092041015625,0.106228493154048919677734,-1.09012115001678466796875,-0.0387823171913623809814453};
const float ref[] = {0.00239783083088696002960205,0.00717453286051750183105469,-0.0582481250166893005371094,-0.0425337292253971099853516,-0.0308496784418821334838867,-0.0111429747194051742553711,-0.0310833211988210678100586,-0.0323281250894069671630859,-0.0391276068985462188720703,-0.0136320600286126136779785,-0.00854117423295974731445312,-0.0443949662148952484130859,0.0178730003535747528076172,-0.0361761748790740966796875,-0.103034742176532745361328,-0.166779175400733947753906,-0.24717175960540771484375,-0.321047991514205932617188,-0.3474528789520263671875,-0.293608635663986206054688,-0.335048139095306396484375,-0.287080258131027221679688,-0.323931515216827392578125,-0.342907965183258056640625,-0.276547908782958984375,-0.279852449893951416015625,-0.23152065277099609375,-0.261411458253860473632812,-0.34313571453094482421875,-0.390839844942092895507812,-0.387347370386123657226562,-0.508739292621612548828125,-0.5366382598876953125,-0.589540541172027587890625,-0.62598001956939697265625,-0.705707728862762451171875,-0.78794825077056884765625,-0.82729828357696533203125,-0.825699031352996826171875,-0.863305985927581787109375,-0.868844568729400634765625,-0.8705303668975830078125,-0.951479434967041015625,-1.0299856662750244140625,-1.0378224849700927734375,-1.1018211841583251953125,-1.149448394775390625,-1.2419109344482421875,-1.3748366832733154296875,-1.38338148593902587890625,-1.44868266582489013671875,-1.57583200931549072265625,-1.68348228931427001953125,-1.71997833251953125,-1.7904303073883056640625,-1.83934783935546875,-1.95415437221527099609375,-2.0698063373565673828125,-2.19092845916748046875,-2.229879856109619140625,-2.209795475006103515625,-2.259418487548828125,-2.3601894378662109375,-2.4434630870819091796875,-2.5057051181793212890625,-2.5975360870361328125,-2.7743675708770751953125,-2.8524286746978759765625,-2.9989240169525146484375,-3.0265781879425048828125,-3.0960748195648193359375,-3.136264324188232421875,-3.2644283771514892578125,-3.4033882617950439453125,-3.477934360504150390625,-3.6142838001251220703125,-3.665204524993896484375,-3.7508704662322998046875,-3.882713794708251953125,-3.9768755435943603515625,-4.04129505157470703125,-4.16065692901611328125,-4.2862834930419921875,-4.294989109039306640625,-4.397524356842041015625,-4.510335445404052734375,-4.566348552703857421875,-4.699834346771240234375,-4.83537960052490234375,-4.849666118621826171875,-4.918969631195068359375,-5.04812526702880859375,-5.075469493865966796875,-5.115299701690673828125,-5.28005504608154296875,-5.38856220245361328125,-5.497127056121826171875,-5.509063243865966796875,-5.506566524505615234375,-5.51924991607666015625,-5.569739818572998046875,-5.60138034820556640625,-5.645751953125,-5.80860233306884765625,-5.886764049530029296875,-5.8720340728759765625,-6.019017696380615234375,-5.991733551025390625,-6.018525600433349609375,-6.02696990966796875,-6.023828983306884765625,-6.03125667572021484375,-5.9822826385498046875,-5.988295078277587890625,-5.998002529144287109375,-6.053358554840087890625,-6.02335643768310546875,-5.9294281005859375,-5.89743137359619140625,-5.922309398651123046875,-5.886503696441650390625,-5.770039081573486328125,-5.732348918914794921875,-5.667415142059326171875,-5.658247470855712890625,-5.587143421173095703125,-5.52980709075927734375,-5.46532917022705078125,-5.38215351104736328125,-5.33815765380859375,-5.181651592254638671875,-5.118036746978759765625,-5.093544483184814453125,-5.0658969879150390625,-5.01296329498291015625,-4.9196624755859375,-4.91128635406494140625,-4.833615779876708984375,-4.8351917266845703125,-4.77650737762451171875,-4.753058910369873046875,-4.619467258453369140625,-4.420931339263916015625,-4.327665805816650390625,-4.257335662841796875,-4.135934352874755859375,-4.209192752838134765625,-4.263696193695068359375,-4.19061183929443359375,-4.287714481353759765625,-4.22205066680908203125,-4.18721866607666015625,-4.2794666290283203125,-4.297712802886962890625,-4.3268337249755859375,-4.2678623199462890625,-4.20109844207763671875,-4.1397571563720703125,-4.151798725128173828125,-4.04967498779296875,-4.1443195343017578125,-4.159832000732421875,-4.152536869049072265625,-4.2219219207763671875,-4.22336292266845703125,-4.30291652679443359375,-4.4372348785400390625,-4.414284229278564453125,-4.451569080352783203125,-4.47533321380615234375,-4.428586483001708984375,-4.46660518646240234375,-4.564644336700439453125,-4.54217529296875,-4.575183868408203125,-4.641531467437744140625,-4.60766124725341796875,-4.728331089019775390625,-4.846701145172119140625,-4.78057956695556640625,-4.7304592132568359375,-4.752751827239990234375,-4.748259067535400390625,-4.70615673065185546875,-4.60690975189208984375,-4.62186431884765625,-4.50038909912109375,-4.56376552581787109375,-4.55364513397216796875,-4.50304126739501953125,-4.40753078460693359375,-4.324647426605224609375,-4.18805599212646484375,-4.018436908721923828125,-3.773965358734130859375,-3.657213687896728515625,-3.5072209835052490234375,-3.4427335262298583984375,-3.3137218952178955078125,-3.15463733673095703125,-2.9663527011871337890625,-2.8070938587188720703125,-2.5792896747589111328125,-2.3328111171722412109375,-2.2289307117462158203125,-1.98834526538848876953125,-1.68155443668365478515625,-1.41685831546783447265625,-1.21214568614959716796875,-0.900089204311370849609375,-0.705209195613861083984375,-0.487676709890365600585938,-0.199230715632438659667969,0.0437660142779350280761719,0.32668507099151611328125,0.558542668819427490234375,0.89321124553680419921875,1.06389248371124267578125,1.3232333660125732421875,1.6058223247528076171875,1.77407753467559814453125,2.0209386348724365234375,2.2712843418121337890625,2.49525928497314453125,2.702161312103271484375,2.838309764862060546875,2.9352829456329345703125,3.111152172088623046875,3.2651636600494384765625,3.4313266277313232421875,3.6158349514007568359375,3.9727270603179931640625,4.24067401885986328125,4.41403961181640625,4.680138111114501953125,4.818204402923583984375,4.975018024444580078125,5.133809566497802734375,5.28495883941650390625,5.526909351348876953125,5.63459110260009765625,5.85857868194580078125,6.136124134063720703125,6.419674396514892578125,6.7207279205322265625,6.849533557891845703125,7.1029148101806640625,7.375089168548583984375,7.60822296142578125,7.787208080291748046875,7.998150348663330078125,8.233539581298828125,8.52910900115966796875,8.79923915863037109375,9.030979156494140625,9.1797809600830078125,9.39701747894287109375,9.68390369415283203125,9.914020538330078125,10.19262981414794921875,10.50371551513671875,10.771026611328125,11.041118621826171875,11.25802326202392578125,11.53898715972900390625,11.7535552978515625,12.00365352630615234375,12.247913360595703125,12.42538166046142578125,12.6962642669677734375,12.865901947021484375,13.01981449127197265625,13.30826854705810546875,13.49969387054443359375,13.74952983856201171875,13.903530120849609375,14.03516292572021484375,14.20637416839599609375,14.2985248565673828125,14.4238719940185546875,14.52974987030029296875,14.6718082427978515625,14.710750579833984375,14.7624988555908203125,14.86634063720703125,14.89673900604248046875,14.88298130035400390625,14.8949260711669921875,14.96703052520751953125,15.02258205413818359375,15.0004520416259765625,15.0060329437255859375,15.05814838409423828125,15.0649471282958984375,15.007579803466796875,14.7877826690673828125,14.63052654266357421875,14.43740940093994140625,14.3152980804443359375,14.269927978515625,14.15223979949951171875,13.93277454376220703125,13.78590679168701171875,13.6925258636474609375,13.4714488983154296875,13.23359775543212890625,13.07585906982421875,12.7202892303466796875,12.42542362213134765625,12.1288127899169921875,11.90855503082275390625,11.587909698486328125,11.257076263427734375,10.99163913726806640625,10.627483367919921875,10.39928722381591796875,10.0192546844482421875,9.68810176849365234375,9.3329830169677734375,9.04935741424560546875,8.59936809539794921875,8.15506839752197265625,7.6728668212890625,7.278873920440673828125,6.981403350830078125,6.565240383148193359375,6.082672595977783203125,5.571167469024658203125,5.142333507537841796875,4.79668712615966796875,4.288706302642822265625,3.9011936187744140625,3.5028245449066162109375,3.0741670131683349609375,2.6829612255096435546875,2.26052379608154296875,1.875864505767822265625,1.46055710315704345703125,1.28931438922882080078125,0.8540513515472412109375,0.457315534353256225585938,0.163828715682029724121094,-0.204932272434234619140625,-0.410027295351028442382812,-0.755281269550323486328125,-1.0421679019927978515625,-1.34764766693115234375,-1.47118604183197021484375,-1.6257832050323486328125,-1.877814769744873046875,-1.8548538684844970703125,-1.972003459930419921875,-2.12985992431640625,-2.26281642913818359375,-2.2925455570220947265625,-2.441722869873046875,-2.5919568538665771484375,-2.6515960693359375,-2.7548353672027587890625,-2.9199116230010986328125,-3.003085613250732421875,-3.174626827239990234375,-3.2012135982513427734375,-3.2546274662017822265625,-3.2282874584197998046875,-3.2439725399017333984375,-3.2450807094573974609375,-3.349015712738037109375,-3.345554351806640625,-3.3953969478607177734375,-3.4733486175537109375,-3.5175058841705322265625,-3.679091930389404296875,-3.661607265472412109375,-3.6703479290008544921875,-3.709945201873779296875,-3.7105972766876220703125,-3.7514438629150390625,-3.6151790618896484375,-3.5776011943817138671875,-3.5446784496307373046875,-3.563823699951171875,-3.5105512142181396484375,-3.3562705516815185546875,-3.370018482208251953125,-3.2620775699615478515625,-3.1598412990570068359375,-3.140606403350830078125,-3.147504329681396484375,-3.0425751209259033203125,-2.932240962982177734375,-2.8587019443511962890625,-2.7626106739044189453125,-2.687008380889892578125,-2.6491641998291015625,-2.5213673114776611328125,-2.460085391998291015625,-2.4544789791107177734375,-2.4545829296112060546875,-2.2963047027587890625,-2.2845942974090576171875,-2.262281894683837890625,-2.0796263217926025390625,-1.94872868061065673828125,-1.777387142181396484375,-1.59454119205474853515625,-1.442134380340576171875,-1.234769344329833984375,-1.015135288238525390625,-0.8858134746551513671875,-0.710691869258880615234375,-0.57916164398193359375,-0.427132129669189453125,-0.277617067098617553710938,-0.0667633563280105590820312,0.103124365210533142089844,0.225989237427711486816406,0.400469601154327392578125,0.478051602840423583984375,0.734089791774749755859375,0.883211195468902587890625,1.01329648494720458984375,1.24866402149200439453125,1.38184463977813720703125,1.5062644481658935546875,1.64830553531646728515625,1.847003459930419921875,1.97611105442047119140625,2.114157199859619140625,2.264933109283447265625,2.3649919033050537109375,2.5162565708160400390625,2.6528289318084716796875,2.863860607147216796875,2.9555270671844482421875,3.0468447208404541015625,3.178963184356689453125,3.2271835803985595703125,3.2947299480438232421875,3.3411426544189453125,3.384624481201171875,3.52624416351318359375,3.5726106166839599609375,3.6521284580230712890625,3.68140316009521484375,3.7457120418548583984375,3.7623636722564697265625,3.7272183895111083984375,3.870553493499755859375,3.8985068798065185546875,3.992977142333984375,4.033703327178955078125,3.9406197071075439453125,3.8761913776397705078125,3.9972569942474365234375,3.9952538013458251953125,4.009756565093994140625,3.9038412570953369140625,3.795699596405029296875,3.6330735683441162109375,3.5918314456939697265625,3.4113485813140869140625,3.243113994598388671875,3.0924308300018310546875,2.947103023529052734375,2.8502581119537353515625,2.563086986541748046875,2.550525188446044921875,2.4480555057525634765625,2.3478152751922607421875,2.1451704502105712890625,1.94185101985931396484375,1.80995047092437744140625,1.69612133502960205078125,1.57553517818450927734375,1.34425055980682373046875,1.22862708568572998046875,1.09736406803131103515625,0.84418404102325439453125,0.7364032268524169921875,0.629222929477691650390625,0.529447257518768310546875,0.316341876983642578125,0.268953949213027954101562,0.311587661504745483398438,0.235802263021469116210938,0.253029733896255493164062,0.245717659592628479003906,0.0882315188646316528320312,0.156999617815017700195312,0.156569987535476684570312,0.102689728140830993652344,0.0543948337435722351074219,0.0799423232674598693847656,0.131875142455101013183594,0.202099591493606567382812,0.291973620653152465820312,0.369668692350387573242188,0.435672432184219360351562,0.461997121572494506835938,0.68405997753143310546875,0.750737011432647705078125,0.768964111804962158203125,0.891269385814666748046875,0.95427739620208740234375,0.977006614208221435546875,0.97761714458465576171875,1.0735623836517333984375,1.16310656070709228515625,1.2358667850494384765625,1.34320294857025146484375,1.5411703586578369140625,1.6160418987274169921875,1.6071364879608154296875,1.595484256744384765625,1.70191276073455810546875,1.7651989459991455078125,1.8158900737762451171875,1.86982095241546630859375,1.93272578716278076171875,2.1269664764404296875,2.1916215419769287109375,2.3945553302764892578125,2.4098985195159912109375,2.5983436107635498046875,2.631931304931640625,2.84923839569091796875,2.9096548557281494140625,2.9746320247650146484375,3.0185222625732421875,2.9528796672821044921875,2.9518597126007080078125,2.8972041606903076171875,2.89022731781005859375,2.863980770111083984375,2.7777233123779296875,2.70670413970947265625,2.64914798736572265625,2.665391445159912109375,2.7591993808746337890625,2.7103271484375,2.680710315704345703125,2.7429349422454833984375,2.7538220882415771484375,2.812154293060302734375,2.7506701946258544921875,2.794276714324951171875,2.7005465030670166015625,2.6000072956085205078125,2.59671878814697265625,2.505824565887451171875,2.6275436878204345703125,2.6825544834136962890625,2.7779958248138427734375,2.7148125171661376953125,2.70898151397705078125,2.750241756439208984375,2.840234279632568359375,3.0014674663543701171875,3.0473678112030029296875,3.105657100677490234375,3.154555797576904296875,3.30366230010986328125,3.3769624233245849609375,3.391337871551513671875,3.52264404296875,3.6675798892974853515625,3.7885515689849853515625,4.013123035430908203125,4.101603984832763671875,4.217342376708984375,4.287559032440185546875,4.500516414642333984375,4.6016330718994140625,4.820032596588134765625,5.010583400726318359375,5.02941417694091796875,5.09559726715087890625,5.1584987640380859375,5.28284358978271484375,5.5367679595947265625,5.66422176361083984375,5.776619434356689453125,5.902129650115966796875,6.03627300262451171875,6.238723278045654296875,6.319018840789794921875,6.36372280120849609375,6.438035488128662109375,6.600122928619384765625,6.787759304046630859375,6.932974338531494140625,7.051478862762451171875,7.08207225799560546875,7.216274738311767578125,7.173069000244140625,7.244200229644775390625,7.3043155670166015625,7.477813720703125,7.449004650115966796875,7.517482757568359375,7.55189418792724609375,7.530874729156494140625,7.50538730621337890625,7.538930416107177734375,7.571628570556640625,7.492239475250244140625,7.440616607666015625,7.455789089202880859375,7.402926921844482421875,7.409030437469482421875,7.35137176513671875,7.291942596435546875,7.29483509063720703125,7.26862335205078125,7.264954090118408203125,7.38771724700927734375,7.28196048736572265625,7.23920726776123046875,7.250075817108154296875,7.18505191802978515625,7.146703243255615234375,6.9901676177978515625,6.9636211395263671875,6.877956390380859375,6.773213863372802734375,6.795745849609375,6.817210674285888671875,6.52048397064208984375,6.49257659912109375,6.455356121063232421875,6.288844585418701171875,6.2287120819091796875,6.1479663848876953125,5.993454456329345703125,5.901935100555419921875,5.739717006683349609375,5.57741069793701171875,5.410944461822509765625,5.15093135833740234375,5.017029285430908203125,4.818997859954833984375,4.67087459564208984375,4.45847034454345703125,4.31334209442138671875,4.064518451690673828125,3.8412322998046875,3.6779711246490478515625,3.3302676677703857421875,3.10243892669677734375,2.771828174591064453125,2.498785495758056640625,2.0533220767974853515625,1.87311708927154541015625,1.54075396060943603515625,1.3412630558013916015625,1.0737125873565673828125,0.901014745235443115234375,0.68607151508331298828125,0.43464267253875732421875,0.125948697328567504882812,-0.164374887943267822265625,-0.360172361135482788085938,-0.58443176746368408203125,-0.778503715991973876953125,-0.953663885593414306640625,-1.215478420257568359375,-1.53599178791046142578125,-1.71806085109710693359375,-1.9414937496185302734375,-2.1828479766845703125,-2.4099099636077880859375,-2.5585544109344482421875,-2.751184940338134765625,-2.9459209442138671875,-3.0752952098846435546875,-3.17699909210205078125,-3.2917921543121337890625,-3.3461246490478515625,-3.4733564853668212890625,-3.5938198566436767578125,-3.777605533599853515625,-3.919640064239501953125,-3.9954288005828857421875,-4.11267948150634765625,-4.2891845703125,-4.495395660400390625,-4.553544521331787109375,-4.581187725067138671875,-4.570903301239013671875,-4.67391204833984375,-4.6224994659423828125,-4.70093059539794921875,-4.725360870361328125,-4.843109130859375,-4.90888690948486328125,-4.93851566314697265625,-4.91961765289306640625,-4.901513576507568359375,-4.84463405609130859375,-4.901443958282470703125,-4.846025943756103515625,-4.818081378936767578125,-4.86017608642578125,-4.71806240081787109375,-4.541338443756103515625,-4.40505886077880859375,-4.422212123870849609375,-4.49258136749267578125,-4.3466892242431640625,-4.38442325592041015625,-4.34050655364990234375,-4.308808803558349609375,-4.35244655609130859375,-4.217769622802734375,-4.128561496734619140625,-4.02456951141357421875,-4.0079441070556640625,-4.058324337005615234375,-4.016918659210205078125,-3.915745258331298828125,-3.8830912113189697265625,-3.7763597965240478515625,-3.633532047271728515625,-3.5672271251678466796875,-3.4751350879669189453125,-3.40922451019287109375,-3.2219178676605224609375,-3.14140224456787109375,-3.0678255558013916015625,-3.0584294795989990234375,-2.9953327178955078125,-2.971729755401611328125,-2.9341580867767333984375,-2.7572681903839111328125,-2.7191574573516845703125,-2.64439678192138671875,-2.591419219970703125,-2.522085666656494140625,-2.5177476406097412109375,-2.4103696346282958984375,-2.4420261383056640625,-2.4122788906097412109375,-2.4309022426605224609375,-2.488894939422607421875,-2.434151172637939453125,-2.455408573150634765625,-2.4853017330169677734375,-2.43695926666259765625,-2.4684545993804931640625,-2.47064685821533203125,-2.529024600982666015625,-2.559999942779541015625,-2.5750100612640380859375,-2.5966949462890625,-2.5813224315643310546875,-2.452606201171875,-2.4645750522613525390625,-2.484061717987060546875,-2.4631097316741943359375,-2.551158905029296875,-2.590648174285888671875,-2.7029387950897216796875,-2.7471411228179931640625,-2.750412464141845703125,-2.754111766815185546875,-2.7830753326416015625,-2.855232715606689453125,-2.8296375274658203125,-2.8872945308685302734375,-2.91501331329345703125,-2.990621089935302734375,-3.0655524730682373046875,-3.100403308868408203125,-3.108189105987548828125,-3.1620624065399169921875,-3.24412250518798828125,-3.295958042144775390625,-3.1541271209716796875,-3.0829164981842041015625,-3.0081493854522705078125,-3.08394908905029296875,-3.1128046512603759765625,-3.1664497852325439453125,-3.1651327610015869140625,-3.2048513889312744140625,-3.0647556781768798828125,-2.99073886871337890625,-2.8574445247650146484375,-2.8739340305328369140625,-2.8225247859954833984375,-2.7008297443389892578125,-2.5967247486114501953125,-2.5472371578216552734375,-2.435753345489501953125,-2.394834995269775390625,-2.3573124408721923828125,-2.26853084564208984375,-2.143762111663818359375,-1.98703086376190185546875,-1.9192979335784912109375,-1.7414467334747314453125,-1.64986860752105712890625,-1.465852260589599609375,-1.26906478404998779296875,-1.03096449375152587890625,-0.867995798587799072265625,-0.762636721134185791015625,-0.577075541019439697265625,-0.445692092180252075195312,-0.249096527695655822753906,-0.0441787652671337127685547,0.2335212230682373046875,0.47103035449981689453125,0.6875019073486328125,0.955197751522064208984375,1.207355499267578125,1.3761351108551025390625,1.68599045276641845703125,1.89610898494720458984375,2.216222286224365234375,2.4855120182037353515625,2.761230945587158203125,3.06350994110107421875,3.310178279876708984375,3.584305286407470703125,3.9411945343017578125,4.203388214111328125,4.52619266510009765625,4.814176082611083984375,4.985047817230224609375,5.25624179840087890625,5.43364715576171875,5.686421871185302734375,5.8851985931396484375,6.23292064666748046875,6.483352184295654296875,6.7032718658447265625,6.98105525970458984375,7.3380126953125,7.55206012725830078125,7.808776378631591796875,7.974840641021728515625,8.16873645782470703125,8.37794208526611328125,8.54196071624755859375,8.73404979705810546875,8.87904262542724609375,8.92525577545166015625,9.101779937744140625,9.18584346771240234375,9.28001117706298828125,9.3570384979248046875,9.44022655487060546875,9.56975078582763671875,9.612178802490234375,9.67903995513916015625,9.71234989166259765625,9.994075775146484375,9.9843597412109375,9.99759387969970703125,10.01922321319580078125,9.95692157745361328125,9.995166778564453125,9.94978237152099609375,9.959865570068359375,9.8791980743408203125,9.819286346435546875,9.6706905364990234375,9.580291748046875,9.451171875,9.3629360198974609375,9.27886676788330078125,9.252231597900390625,9.178531646728515625,9.05523014068603515625,8.956615447998046875,8.828765869140625,8.79287052154541015625,8.58513545989990234375,8.5071125030517578125,8.38834667205810546875,8.1330165863037109375,7.879949092864990234375,7.603836536407470703125,7.42114353179931640625,7.261099338531494140625,7.150340557098388671875,6.954166889190673828125,6.756317138671875,6.69738101959228515625,6.34912395477294921875,6.161197662353515625,5.969880580902099609375,5.71900463104248046875,5.62503814697265625,5.31084537506103515625,5.10941982269287109375,4.854598522186279296875,4.64095592498779296875,4.413861751556396484375,4.19438076019287109375,3.9409258365631103515625,3.7249987125396728515625,3.5169646739959716796875,3.3670132160186767578125,2.9515373706817626953125,2.66510772705078125,2.529223918914794921875,2.3134505748748779296875,2.1561682224273681640625,1.9414021968841552734375,1.7950809001922607421875,1.63496077060699462890625,1.29765605926513671875,1.09305799007415771484375,0.818440377712249755859375,0.674167096614837646484375,0.446444422006607055664062,0.192628726363182067871094,-0.00847516767680644989013672,-0.155506700277328491210938,-0.352696985006332397460938,-0.409791767597198486328125,-0.444104850292205810546875,-0.565986096858978271484375,-0.786957800388336181640625,-0.90839946269989013671875,-1.0318090915679931640625,-1.15888118743896484375,-1.2365186214447021484375,-1.36209952831268310546875,-1.5040740966796875,-1.65090382099151611328125,-1.72715532779693603515625,-1.746788501739501953125,-1.83662593364715576171875,-1.8720138072967529296875,-1.94266355037689208984375,-2.0162222385406494140625,-2.129585742950439453125,-2.122127056121826171875,-2.16652965545654296875,-2.3030757904052734375,-2.4116222858428955078125,-2.469295024871826171875,-2.577553272247314453125,-2.61004161834716796875,-2.6602461338043212890625,-2.7644670009613037109375,-2.8550431728363037109375,-2.847391605377197265625,-2.99230289459228515625,-3.1058528423309326171875,-3.284904003143310546875,-3.37237548828125,-3.455219745635986328125,-3.5439555644989013671875,-3.583847522735595703125,-3.61365985870361328125,-3.672406673431396484375,-3.795047760009765625,-3.8524792194366455078125,-3.938091754913330078125,-4.01436138153076171875,-4.05078983306884765625,-4.054259777069091796875,-4.28287506103515625,-4.416075229644775390625,-4.424606800079345703125,-4.405982494354248046875,-4.405975341796875,-4.530209064483642578125,-4.58305263519287109375,-4.6514873504638671875,-4.7218017578125,-4.77814960479736328125,-4.853497982025146484375,-4.918241024017333984375,-4.976692676544189453125,-5.000841617584228515625,-5.175752162933349609375,-5.35337066650390625,-5.347913265228271484375,-5.427272319793701171875,-5.487192630767822265625,-5.6707000732421875,-5.576690673828125,-5.64521503448486328125,-5.7143955230712890625,-5.787491321563720703125,-5.908282756805419921875,-5.99518871307373046875,-6.13424205780029296875,-6.090853214263916015625,-6.084833621978759765625,-6.138131618499755859375,-6.173987865447998046875,-6.259080410003662109375,-6.193245410919189453125,-6.229265689849853515625,-6.343975067138671875,-6.408359527587890625,-6.420835018157958984375,-6.4068241119384765625,-6.368210315704345703125,-6.421297550201416015625,-6.333339691162109375,-6.349108219146728515625,-6.377728939056396484375,-6.432759761810302734375,-6.347835063934326171875,-6.329243183135986328125,-6.3507480621337890625,-6.39700412750244140625,-6.3624362945556640625,-6.29626560211181640625,-6.19477748870849609375,-6.1294803619384765625,-5.98697566986083984375,-5.9349460601806640625,-5.862438201904296875,-5.80920886993408203125,-5.828031063079833984375};
const float DSP_ALIGNED(16) b[] = {0.0461267344653606414794922,0.0507810376584529876708984,0.0558197386562824249267578,0.0612648427486419677734375,0.0671385824680328369140625,0.0734632834792137145996094,0.08026123046875,0.0875545293092727661132812,0.0953649431467056274414062,0.103713713586330413818359,0.112621411681175231933594,0.122107699513435363769531,0.132191166281700134277344,0.142889112234115600585938,0.154217332601547241210938,0.166189879179000854492188,0.17881882190704345703125,0.192114099860191345214844,0.20608317852020263671875,0.220730930566787719726562,0.23605930805206298828125,0.252067238092422485351562,0.268750339746475219726562,0.286100685596466064453125,0.304106801748275756835938,0.32275331020355224609375,0.342020839452743530273438,0.361885994672775268554688,0.382321089506149291992188,0.4032943248748779296875,0.424769431352615356445312,0.446705907583236694335938,0.469059020280838012695312,0.491779714822769165039062,0.514814794063568115234375,0.5381071567535400390625,0.56159579753875732421875,0.585216045379638671875,0.608899891376495361328125,0.63257634639739990234375,0.656171381473541259765625,0.67960870265960693359375,0.70280992984771728515625,0.725695133209228515625,0.748182952404022216796875,0.77019155025482177734375,0.791638672351837158203125,0.81244242191314697265625,0.832521498203277587890625,0.85179615020751953125,0.870188236236572265625,0.88762199878692626953125,0.904024541378021240234375,0.919326364994049072265625,0.93346178531646728515625,0.946369349956512451171875,0.957992494106292724609375,0.968279778957366943359375,0.97718536853790283203125,0.984669208526611328125,0.99069750308990478515625,0.99524295330047607421875,0.998284876346588134765625,0.99980926513671875,0.99980926513671875,0.998284876346588134765625,0.99524295330047607421875,0.99069750308990478515625,0.984669208526611328125,0.97718536853790283203125,0.968279778957366943359375,0.957992494106292724609375,0.946369349956512451171875,0.93346178531646728515625,0.919326364994049072265625,0.904024541378021240234375,0.88762199878692626953125,0.870188236236572265625,0.85179615020751953125,0.832521498203277587890625,0.81244242191314697265625,0.791638672351837158203125,0.77019155025482177734375,0.748182952404022216796875,0.725695133209228515625,0.70280992984771728515625,0.67960870265960693359375,0.656171381473541259765625,0.63257634639739990234375,0.608899891376495361328125,0.585216045379638671875,0.56159579753875732421875,0.5381071567535400390625,0.514814794063568115234375,0.491779714822769165039062,0.469059020280838012695312,0.446705907583236694335938,0.424769431352615356445312,0.4032943248748779296875,0.382321089506149291992188,0.361885994672775268554688,0.342020839452743530273438,0.32275331020355224609375,0.304106801748275756835938,0.286100685596466064453125,0.268750339746475219726562,0.252067238092422485351562,0.23605930805206298828125,0.220730930566787719726562,0.20608317852020263671875,0.192114099860191345214844,0.17881882190704345703125,0.166189879179000854492188,0.154217332601547241210938,0.142889112234115600585938,0.132191166281700134277344,0.122107699513435363769531,0.112621411681175231933594,0.103713713586330413818359,0.0953649431467056274414062,0.0875545293092727661132812,0.08026123046875,0.0734632834792137145996094,0.0671385824680328369140625,0.0612648427486419677734375,0.0558197386562824249267578,0.0507810376584529876708984,0.0461267344653606414794922};

const float iir_y[] = {4.73906895385019e-012,1.832500152297885e-010,3.314238538367359e-009,3.716390356229609e-008,2.868232891681963e-007,1.579816027473161e-006,6.035588023812464e-006,1.26806016924093e-005,-1.875826945766314e-005,-0.0003176435187761241,-0.001718776833574722,-0.006446722516161536,-0.01890372103999977,-0.04508176924305376,-0.08843893795732187,-0.1416203589130257,-0.1788765558972812,-0.1604028251269814,-0.05766527426792938,0.1096259364525261,0.2590073394070985,0.2875711647570354,0.1586638908234475,-0.04365038279752044,-0.1725140494213487,-0.16854407147189,-0.1570926581895373,-0.3524682415970891,-0.81510319533775,-1.302091647021298,-1.410227071869413,-0.9216219187928388,-0.02354916566904932,0.8237846371216917,1.243211415065192,1.180500301516685,0.8492450882370258,0.5148151767125735,0.3417651530838671,0.3552368792586738,0.4340659262680669,0.3404641395326674,-0.1148980464054109,-0.8259640383688788,-1.349245972194234,-1.252476474776851,-0.5816407719922834,0.09134784046109248,0.199977916443462,-0.2266447398292855,-0.5852473378454351,-0.3488722228001854,0.3658007837933933,0.9424291580337936,0.9261921209279089,0.4371394833693448,-0.07364978345863071,-0.3369016380298983,-0.4227454701297759,-0.4711157825428669,-0.4679915006099314,-0.3675245389856284,-0.2894298058772936,-0.4076549874206175,-0.6512710281238298,-0.6977018370416033,-0.3695022701813176,0.06939761000369465,0.174812330101184,-0.1337318354273165,-0.4518319077107427,-0.3788190128567968,0.01153652712100794,0.3315037617834473,0.4186487856643606,0.4738307575746665,0.604090094052994,0.4863776537523434,-0.2308739836912122,-1.248629821699265,-1.682724015336019,-1.013061291945927,0.2049658436244597,0.8620039002507721,0.5188495001490104,-0.1671069172682849,-0.351649272368572,-0.0630279551695867,-0.02551333416572602,-0.5213720454150559,-0.8887278498850979,-0.4107716241525351,0.5816880292158366,0.9659197885667457,0.2358012821037157,-0.7583626203235382,-0.7906265222226528,0.2183780389292127,1.077338117910557,0.7786522936467012,-0.2966687882106959,-0.9033096441809592,-0.4505347646862723,0.4042899592066702,0.7058891306141479,0.3430586913446471,-0.04273814282919106,-0.05672939218715362,-0.000932899543011987,-0.2371364619858403,-0.4893022551116886,-0.1493650251919533,0.8064193474397233,1.570641911260281,1.330582640617286,0.1641647767065128,-1.059576483523226,-1.572830022760363,-1.313848919751026,-0.703377433698385,-0.1038711419047889,0.353951525353064,0.5971436952834258,0.549687194555372,0.2867912845804243,0.0564199080980417,0.0158881976084695,0.03149744423676074,-0.129001672220197,-0.4361543313378197,-0.5733135634251992,-0.3182196013580954,0.1489688448411514,0.4095999185860879,0.2465577020031419,-0.1540812797131863,-0.4328046020984191,-0.4180788410326559,-0.2427799352742075,-0.1598216069230233,-0.2824276207048451,-0.481177659812656,-0.5132194611605638,-0.2833698387603528,-0.0008371613432940597,-0.0223911455303979,-0.4663134356861635,-1.007141451875409,-1.160100990429952,-0.8054775585341635,-0.3372577347498297,-0.2093757705049308,-0.4023065158774549,-0.4703860165596332,-0.1120502865095081,0.456782309466134,0.7710231393110165,0.6353746410136274,0.2390889468024277,-0.1682984094702052,-0.498280501165783,-0.6747690045054708,-0.4964587737469398,0.1187874961416311,0.8170935954463594,1.011999743801948,0.5346469236290443,-0.07455598479283856,-0.1138299109152113,0.4828272386500203,1.076746447056613,1.075318445288399,0.567622269587396,0.09745155206575371,-0.04261495959209534,-0.05547325185888519,-0.1921071125191631,-0.3259624832872929,-0.1529338686098505,0.3160741211712592,0.7136424342192802,0.795557889299726,0.7432942700877117,0.83460681600035,0.9455544712210218,0.6344105913588833,-0.2279778397912272,-1.120107243166936,-1.358339337434362,-0.8793996764239072,-0.3423962693021991,-0.3713102044208484,-0.8191731966445831,-0.9372829923813121,-0.2649014917318049,0.7910305525759994,1.346244008547025,0.94737208944492,-0.00127834644714552,-0.6995615398028622,-0.7312430043741591,-0.335630627996486,0.0006146520094350605,0.07270091936119262,0.04252709993557159,0.1137381942027584,0.2667968884976278,0.337089427442846,0.2468810006709748,0.06302121040114897,-0.1406333294787662,-0.3585456951447257,-0.5458581933596012,-0.5356189473599397,-0.197220120220917,0.3197120788650766,0.6363943672785003,0.5475450645389777,0.3167512461716308,0.4252723108144217,0.9867861452636914,1.532881380705078,1.499387805506456,0.8819831778474404,0.2688685335935105,0.191140855709865,0.5659845376327625,0.8776597696414719,0.8137818867064229,0.5511641910317559,0.4115628228386185,0.42924849342005,0.3943287375446912,0.2120604834967872,0.01133151837757264,-0.1178003294234653,-0.2943498799704334,-0.6215487874235793,-0.9121787913177474,-0.844296899395683,-0.4023523760211151,0.02101654985828785,0.07517605106640904,-0.1045338054510149,-0.05812919313441961,0.4160289649338047,0.9914365063480289,1.176193596419502,0.8317939415046499,0.2485917573671248,-0.1977195090889636,-0.3231781624324651,-0.1142607721782873,0.3628999849471974,0.9253858258264845,1.277666154878611,1.242590938537665,0.9905012754097587,0.8815258603807742,1.011703356944769,1.042627765316261,0.619578077360293,-0.09957263666652153,-0.5175253407260744,-0.2647088266566576,0.3359027887626446,0.6036305770207927,0.2539259926305578,-0.3247746337636693,-0.5633467896280517,-0.3285475366664493,0.06196047451375539,0.3292072828922744,0.5162246806419605,0.7283214061616016,0.7938751307825829,0.4211108024881241,-0.3072744374411886,-0.8217013457057041,-0.6235869260476986,0.1096901003966165,0.6640216876433971,0.5797120715434604,0.1544578055327363,0.02788316427250953,0.3538716882426847,0.6010032762668223,0.2422259838358762,-0.5357715231005991,-1.012959322439297,-0.7946040806870222,-0.2744379547237739,-0.1275891666986988,-0.4831315907529824,-0.8138372063917206,-0.6491215779018357,-0.175948666935967,0.02848773318827569,-0.2490246318138492,-0.6055492471019639,-0.5712955151930254,-0.2076473823796161,0.02979046945445175,-0.05631616845460227,-0.1425173154040289,0.1240110659216956,0.5514691250905174,0.5554481096737802,-0.1087262062785981,-0.9636183980787728,-1.283502927644453,-0.8540810493858942,-0.1189724949234485,0.3780047620284499,0.4999824031992156,0.4162243715076881,0.2110988983651093,-0.16569758193337,-0.5983160022785221,-0.730510280953372,-0.3573345358148946,0.2452454305813898,0.601066307006736,0.6240963600787656,0.6982355677334371,1.071786805213948,1.387226423704011,1.08236765428642,0.2222123888212664,-0.379979603205103,-0.06261258326030073,0.8204988382534545,1.206981415603407,0.5185556479849972,-0.6786198148223755,-1.336372666692785,-1.08911455957846,-0.5383412753607914,-0.4233969627666427,-0.7881234835211124,-1.116099495863623,-1.090785748001637,-0.9110480764131562,-0.8297583144935555,-0.6866273962655231,-0.163290141446305,0.5974799717441964,0.9593260853654809,0.5329852810253827,-0.2404222966606792,-0.5117093172312616,-0.02649119237333151,0.5387150011390374,0.3831741349298237,-0.4353274177066629,-1.063031040278047,-0.8760260295489567,-0.1824067185273175,0.2435449603642283,0.1406059801102501,-0.002792447016989027,0.3207829008744783,0.9602947157158805,1.333795910703865,1.160900506482409,0.7048092921139971,0.313337748966597,0.008217126443566883,-0.329921065295578,-0.5889283919340631,-0.5234576134531699,-0.1903457917898958,0.004497863585863992,-0.1749718471656508,-0.4279869891183762,-0.2904485761758022,0.2102596086970733,0.5411811477125071,0.3574244024247989,-0.04007130750373317,-0.1370818037841393,0.05644242243166189,0.01011956545655112,-0.546242033157417,-1.141665537920919,-1.104256072180129,-0.4526841334880021,0.065701455218483,-0.101501724377644,-0.605534497047166,-0.6329632953293303,0.0688922078146216,0.8843445262721127,1.095993330256446,0.7095820300329218,0.322226850472998,0.318482194814657,0.499850015517484,0.5501515153434682,0.5610348456712304,0.8275969035030796,1.2429740753615,1.256444637143104,0.5820045697677251,-0.2801026383971797,-0.5152528034085651,0.03043986234445327,0.6051461554054088,0.4123548659147773,-0.4441014373955364,-1.088029027540041,-0.9103126882912916,-0.2505200685980252,0.07495225640871339,-0.2243400818913331,-0.5973681667448338,-0.3500885721808513,0.5250610658996663,1.349272550145218,1.511926698416851,1.067558873607342,0.5537996231624557,0.3497918843822797,0.3413790918005986,0.1940679538076909,-0.1804601587358183,-0.5186264075440313,-0.5280468569123428,-0.2288216566116576,0.06290030672422366,0.06449972971696719,-0.1896613138045414,-0.392793318448688,-0.2869798361530724,0.04861326043081885,0.225677949451134,-0.1039168039361094,-0.874975096473617,-1.572280129083764,-1.619098030592717,-0.8828107123035542,0.1586271140723365,0.7695837173006227,0.5456301420476941,-0.2620472005318651,-0.9610958536829437,-0.9912648715954745,-0.3822244096965505,0.288998386879894,0.422952267692074,-0.03812481015335614,-0.5409274560663004,-0.4690742829564465,0.196305468038279,0.8137223211143287,0.7577417332069818,0.1330993839805176,-0.312676454271172,-0.04614173490611348,0.604329214354202,0.8214436796532392,0.2985762864601482,-0.3447346208692242,-0.2903737030427275,0.4558362905819499,1.015772575522044,0.6751906890935906,-0.2336790622007193,-0.6909520039907884,-0.1791271750936983,0.7129706903381055,0.9739407738109696,0.3072698707014393,-0.5938150271875494,-0.8681116743751904,-0.3841229257623857,0.261071480092673,0.4847998622429711,0.2783211816137403,0.05234692613715886,0.1144291034622551,0.3996756967644544,0.6204545562043642,0.5471161453040723,0.1616657792994281,-0.3298454781652009,-0.5875379927718677,-0.3531309621827722,0.2942364202210952,0.9053430620966547,0.996640711729966,0.4888263440128531,-0.2138133505228143,-0.6146892490504434,-0.5715875207495161,-0.3281639030991181,-0.1533496086999251,-0.04811694290668017,0.1567561240872618,0.4870317974017632,0.7091262608866557,0.5557441131441061,0.03062208207863441,-0.5419670379877655,-0.771243735161981,-0.5146182208981787,0.0158855271408759,0.4284340175161787,0.4598977760969806,0.1706227148115578,-0.1417914054459936,-0.2414864908872578,-0.1786621371750007,-0.1967367818064744,-0.4177021417755484,-0.6812523927627167,-0.7543154071900329,-0.6549354411201284,-0.6415337090702376,-0.8276469571606484,-0.9222565079485083,-0.5193588744553549,0.3385634532966105,1.045369255119423,1.015439832732767,0.3333822853584097,-0.3264823144228894,-0.4519137983906438,-0.2170301558979099,-0.1458779867036861,-0.3615884433675081,-0.3951949532651927,0.1900759781613181,1.161019832916113,1.799027405313025,1.699749946421558,1.199761957655263,0.9225443292580224,1.043740666373263,1.182311350696704,0.97284582258575,0.5166871170419168,0.1559986107480335,-0.02826216576540165,-0.2526137081193634,-0.5775797699457862,-0.6831262367233689,-0.2874564419320304,0.3316493108430917,0.5096767792859855,-0.0228931475493049,-0.7145185851982504,-0.7402147393167118,0.06235282689865724,0.9795780379144299,1.192460087686434,0.6229661296297935,-0.09477776630623645,-0.3902008699947059,-0.3221330993444256,-0.3500924257552055,-0.7100027804698178,-1.157986923915451,-1.285309556260954,-0.9468252739745076,-0.3458754254493872,0.1998630713633233,0.4955631668664345,0.5305986901912243,0.4212243435522636,0.3289816421311408,0.3721883863509489,0.545531138060819,0.7099150789147219,0.6849412447031846,0.3871508810280076,-0.07906697456844382,-0.4394007536013784,-0.39645591701813,0.1406100773774811,0.9056320566287979,1.399445793116724,1.272949832270997,0.641730810105036,-0.008632906754757461,-0.2614680719499344,-0.103783953778407,0.1611766427681628,0.2480625444100302,0.07239021107331603,-0.3140139218511592,-0.7885628609684695,-1.097512737713215,-0.8932905113065747,-0.05141324502683503,1.021028691763685,1.573162045725054,1.174650474505618,0.1818525953545412,-0.5709205587704868,-0.5777406354589522,-0.0860823580836079,0.3137670963927916,0.4117485778138272,0.5354668289585106,0.9727006996318468,1.416581847176738,1.204238441866228,0.1565029139849722,-0.9898057009102793,-1.207033982205557,-0.2879245661555862,0.8142591730721158,0.9189135926873646,-0.1222435488111652,-1.251654584653248,-1.361211138858822,-0.49425595983687,0.2611384971529601,0.02721334408385637,-0.9340216682611491,-1.632891500050429,-1.495409592657931,-0.8494317712538473,-0.3164564475618972,-0.0369402636042166,0.2965232504288774,0.8073203097026095,1.165904077398325,1.02846163206893,0.5106371290437564,0.03028146014463406,-0.213223423668039,-0.3727563640675566,-0.5705376925852583,-0.634532834889641,-0.3751727213954092,0.02954489793509795,0.1763835219335876,-0.03345369166868056,-0.2409509269864436,-0.1299310873381731,0.092076627004405,-0.05129229161259984,-0.6010761205065714,-0.9759508162861849,-0.6351167682241525,0.2205943826372761,0.828420683907258,0.7286632082993648,0.2403838169505884,-0.01546972996200697,0.1095185115965975,0.205871374317258,-0.04989212105293803,-0.4229554551055,-0.4372512353686133,-0.02490524902326106,0.3703159779250284,0.3591310888135794,0.07725808236077199,-0.05285480596231906,0.07274312931625274,0.08552404141922497,-0.3498531197482948,-1.028016488249351,-1.349184123157077,-0.9495990068726404,-0.07912806689306688,0.6545515342596555,0.818454401892824,0.4108263625843787,-0.2670432214352647,-0.8417299012541909,-1.013945704644119,-0.6789704714129998,-0.03375027057827326,0.5011653451970004,0.6029571914542145,0.3233123419236327,-0.007415364928066905,-0.1467377628986186,-0.130974218174565,-0.0929881722453047,-0.02517378991364935,0.1494394443144813,0.3341295446479636,0.2807644021073728,-0.06460017317421538,-0.3693901481689362,-0.2292239200296689,0.3372294826156733,0.8439786961202472,0.8378979181526738,0.3521934506753633,-0.2012736317460325,-0.5006369909115396,-0.5527141874010227,-0.5050916675488759,-0.3965752986253603,-0.1825971733313168,0.09708603076302094,0.3158075716317582,0.4068721220454641,0.3916711056868231,0.2477921759114108,-0.1082221256761802,-0.6060857115089542,-0.8956632335403034,-0.6325372668727831,0.06875121958534174,0.6222416935199825,0.5471916934490315,0.003447366317935238,-0.3859693151585725,-0.2464180214640261,0.1611591154084945,0.3346443117536301,0.1716458192442952,0.02864414141716458,0.1601090262634115,0.3231660074598171,0.09821031269457799,-0.4981261878568074,-0.9414697829494783,-0.8026981961779591,-0.2723063608514683,0.05936269301714024,-0.1047980388730609,-0.4492373251525286,-0.4589140981917884,-0.03208682433666043,0.4290689982489911,0.500699977212601,0.1935534770474106,-0.1041218474906854,-0.05919470129183451,0.2970331566823063,0.6527674131497009,0.7252706277655874,0.4718442301230172,0.05834495148330271,-0.319801958353664,-0.5831734421397277,-0.7673033008886074,-0.8997158531182845,-0.9003259652163443,-0.6460868824241541,-0.1642345437512634,0.2767386469056888,0.361066439290417,0.06600987155309318,-0.2366375031633878,-0.1150944992368712,0.4470980315219819,0.9616261698790679,0.8878208331201329,0.178089622202098,-0.6667247749309148,-1.087319453561602,-0.9644983711452767,-0.6202519485976032,-0.4059749953745022,-0.3868653301504855,-0.4144530988968976,-0.3692958781595574,-0.2251935678450911,0.06133934556857042,0.5527481101068013,1.142013330520666,1.464976256661262,1.16308167674041,0.2842996669768025,-0.6544323289026199,-1.081207682632314,-0.8435744880912689,-0.2541476270392417,0.2806310726720251,0.5894910370494166,0.702365682703344,0.6259148268597138,0.2974510662590227,-0.2299387156669976,-0.6828735982612975,-0.7676837800682155,-0.4769074975238118,-0.1154826298009369,0.02472210797422527,-0.02492547403223162,0.01468909471142138,0.2986909852793397,0.6457216283368416,0.7487523021041384,0.5444041144157858,0.2709941710199132,0.1448730679524079,0.09469186542194347,-0.06647669995366831,-0.2517473861449605,-0.07557764659692845,0.6534322936497896,1.50932282361213,1.738382986436694,1.069099600135943,0.1109195598826586,-0.2252486150818807,0.2891725775043226,0.9306814463702969,0.8104053178437515,-0.1491507703630159,-1.121205646543241,-1.228128003836421,-0.3928604340958969,0.6542259874659288,1.10046497137729,0.7325764375532022,0.013976386975518,-0.3703139007872782,-0.07013743264341908,0.6520780625042243,1.096210126829515,0.6787515378898077,-0.5069388048022921,-1.638189825353811,-1.795997722387011,-0.7935755286426315,0.6004753910038728,1.330960168409425,1.003541478360833,0.1804486583830934,-0.2496704123644604,0.04417409659755375,0.5941100663224181,0.7204605818173451,0.2744792163808191,-0.2406182294882855,-0.2442138604644831,0.3039064738984088,0.8915333391048571,1.015834529955067,0.6807162874512324,0.3000081842657639,0.1603291299802124,0.09296194439999285,-0.2498804199660676,-0.8467812102579329,-1.18016888372061,-0.7594477479600729,0.2661095876112831,1.14236056798222,1.228979840373087,0.638223871852902,0.08265478282502271,0.09783360206208974,0.5006488609500928,0.65757195292671,0.2228487836239776,-0.4794822098879739,-0.8109730371324265,-0.4880839103372351,0.1349972503163307,0.417709884019278,0.04515594749072946,-0.668572195905464,-1.04702293961166,-0.6609776149798149,0.2471419855931249,0.9378838647458737,0.8495153519716082,0.1498257940994874,-0.4273775475797555,-0.3480296429077906,0.1614937773614772,0.3985766061922362,0.002530053086112819,-0.6435478385649323,-0.8857512263917673,-0.550219421577236,-0.07154433280235815,0.08240736363959701,-0.08987622237037914,-0.2789203525265527,-0.3383758841262835,-0.3855171816032441,-0.46862342431823,-0.3918974479017359,-0.01247950033923,0.439542810935977,0.5596730958954709,0.2794388188725451,-0.01912685329556544,0.018645181089141,0.2809838331580868,0.380238928706527,0.1920174036674889,-0.01276228465616079,-0.002752522276918168,0.0666228546057657,-0.08561773391735927,-0.3721048650196553,-0.3612668111717738,0.1379053866024156,0.7101578521890926,0.7437196673111728,0.1628105782228026,-0.4302266769869194,-0.4121139421621323,0.1670718336604767,0.6459881082490173,0.4659007245588744,-0.2766896722845519,-0.9882355079153262,-1.181500050194195,-0.857222970539561,-0.357097482198609,0.02738817793065123,0.2427985979431412,0.3468537282033201,0.3260533867720236,0.1161897274097345,-0.2233619283628188,-0.4488267175885654,-0.3216539142878818,0.1321634274557118,0.5928309528145276,0.7117539133495107,0.4107936189597313,-0.081510690673872,-0.4674932184193265,-0.6275503738178845,-0.6448534417889431,-0.6376645283487396,-0.6113770914687199,-0.4779795358961138,-0.1960454197786036,0.132158684156748,0.3202961773487982,0.2710764686583712,0.08830298525849481,-0.01720282878836279,0.0379226321142973,0.09770060963712368,-0.0457940556045739,-0.3448912331128994,-0.4639087217124777,-0.1438460794739987,0.4280035095328363,0.7312278281250906,0.4517922720318899,-0.1644529409020652,-0.5790355230091823,-0.5332547946628811,-0.2379796922616858,-0.003332688486582284,0.1440228104998612,0.3451208914728973,0.5250639929158836,0.3730685578912044,-0.2091854199980163,-0.8153810702502038,-0.8963827925094147,-0.4000923623876914,0.1247219684161493,0.1345284892007319,-0.3228684806719934,-0.7440393136260014,-0.8065655709742684,-0.6845505185154058,-0.6999075753168623,-0.8428149081164901,-0.8088212779267193,-0.4609495354542138,-0.06128505710293366,0.04556977277568608,-0.1241943458462281,-0.2004902160148373,0.09555630794933079,0.6185954277398984,0.9578734185140178,0.867161174941209,0.4739977334872357,0.09639108470763737,-0.05914153108521373,0.004952098860605213,0.1938505048928047,0.4246976095291591,0.5940842305267708,0.5326963053061097,0.1163061146089086,-0.5277676865310136,-0.9919302818258515,-0.8912307277041199,-0.2662179408451299,0.3591859833010813,0.421351205441026,-0.1330083492546598,-0.7715283366942526,-0.8893954984331255,-0.3861907690662469,0.2861749640381295,0.6019638216210272,0.4121597450520699,-0.06283147169452163,-0.549871391641209,-0.9146049815620573,-1.084929567261448,-0.9522844379850997,-0.4610823437680284,0.2358562941526151,0.802079641200059,0.9412264546243575,0.6073848412353849,0.03284367814667741,-0.4153850757176285,-0.456435639908731,-0.09199285539463277,0.3662513817973416,0.54507178727395,0.3792266612615044,0.200071810738768,0.3460625609766019,0.6817401196892061,0.6536919718054202,-0.05849543577733282};
const double iir_b[] = {9.116480031260916e-011,2.826108809690884e-009,4.239163214536326e-008,4.097857774051782e-007,2.868500441836247e-006,1.548990238591573e-005,6.712291033896817e-005,0.0002397246797820292,0.0007191740393460875,0.001837889211662224,0.004043356265656892,0.00771913468898134,0.01286522448163557,0.0188030203962366,0.02417531193801848,0.02739868686308761,0.02739868686308761,0.02417531193801848,0.0188030203962366,0.01286522448163557,0.00771913468898134,0.004043356265656893,0.001837889211662224,0.0007191740393460876,0.0002397246797820293,6.712291033896819e-005,1.548990238591573e-005,2.868500441836247e-006,4.097857774051782e-007,4.239163214536326e-008,2.826108809690884e-009,9.116480031260916e-011};
const double iir_a[] = {1,-5.776745529429826,20.07375973418788,-49.99916129228083,98.43668245753189,-159.9166230171957,220.8665775504101,-264.0859156654913,277.0460918208041,-257.3549707874728,213.1403163243177,-158.1404612018671,105.4782450378283,-63.38508807199597,34.36036800624191,-16.80813292249416,7.415835240799201,-2.947173154849942,1.052728811537676,-0.3369394248641909,0.09623261644575805,-0.02439542117675405,0.005451864065471806,-0.001064748414015101,0.0001796998873738134,-2.58280298351032e-005,3.100035872565629e-006,-3.023769700791988e-007,2.302962136317918e-008,-1.28499914875504e-009,4.672726392105205e-011,-8.311020649817533e-013};



void dsp::test::filter_test::test_fir()
{
	float out[1024];
	dsp::filter<float> fir(b, 128);
	for (size_t i = 0; i < 1024; ++i) out[i] = fir(in[i]);
	CPPUNIT_ASSERT(std::equal(out, out + 1024, ref, dsp::within_range<float>(0.00001f)));
}

void dsp::test::filter_test::test_fir_block()
{
	const float* inn = in;
	const float* reff = ref;
	float out[128];
	dsp::block_filter<float> fir(128, b, 128);
	for (size_t i = 0; i < 1024; i += 128, inn += 128, reff += 128) {
		std::copy(inn, inn + 128, fir.x.begin());
		fir();
		std::copy(fir.y.begin(), fir.y.end(), out);
		CPPUNIT_ASSERT(std::equal(out, out + 128, reff, dsp::within_range<float>(0.00001f)));
	}
}

void dsp::test::filter_test::test_iir()
{
	float out[1024];
	dsp::filter<double> iir(iir_b, 32, iir_a, 32);
	for (size_t i = 0; i < 1024; ++i)
		out[i] = iir(in[i]);
	CPPUNIT_ASSERT(std::equal(out, out + 1024, iir_y, dsp::within_range<float>(0.00001f)));
}

void dsp::test::filter_test::test_iir_block()
{
	const float* inn = in;
	const float* reff = iir_y;
	float out[64];
	dsp::block_filter<double> iir(64, iir_b, 32, iir_a, 32);
	for (size_t i = 0; i < 1024; i += 64, inn += 64, reff += 64) {
		std::copy(inn, inn + 64, iir.x.begin());
		iir();
		std::copy(iir.y.begin(), iir.y.end(), out);
		CPPUNIT_ASSERT(std::equal(out, out + 64, reff, dsp::within_range<float>(0.00001f)));
	}
}

#define MWSPT_NSEC 33
const int NL[MWSPT_NSEC] = { 1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,2,1 };
const double NUM[MWSPT_NSEC][3] = {
  {
     0.3392184642058,                 0,                 0
  },
  {
                   1,                 2,                 1
  },
  {
     0.3106322503494,                 0,                 0
  },
  {
                   1,                 2,                 1
  },
  {
     0.2868332697791,                 0,                 0
  },
  {
                   1,                 2,                 1
  },
  {
     0.2669138377872,                 0,                 0
  },
  {
                   1,                 2,                 1
  },
  {
     0.2501804236545,                 0,                 0
  },
  {
                   1,                 2,                 1
  },
  {
     0.2360974971556,                 0,                 0
  },
  {
                   1,                 2,                 1
  },
  {
     0.2242479321946,                 0,                 0
  },
  {
                   1,                 2,                 1
  },
  {
     0.2143046893382,                 0,                 0
  },
  {
                   1,                 2,                 1
  },
  {
     0.2060103159105,                 0,                 0
  },
  {
                   1,                 2,                 1
  },
  {
     0.1991619564403,                 0,                 0
  },
  {
                   1,                 2,                 1
  },
  {
     0.1936003130858,                 0,                 0
  },
  {
                   1,                 2,                 1
  },
  {
     0.1892014877527,                 0,                 0
  },
  {
                   1,                 2,                 1
  },
  {
      0.185870967863,                 0,                 0
  },
  {
                   1,                 2,                 1
  },
  {
     0.1835392437333,                 0,                 0
  },
  {
                   1,                 2,                 1
  },
  {
     0.1821587037616,                 0,                 0
  },
  {
                   1,                 2,                 1
  },
  {
     0.4262646685862,                 0,                 0
  },
  {
                   1,                 1,                 0
  },
  {
                   1,                 0,                 0
  }
};
const int DL[MWSPT_NSEC] = { 1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,2,1 };
const double DEN[MWSPT_NSEC][3] = {
  {
                   1,                 0,                 0
  },
  {
                   1,  -0.5506256483874,   0.9074995052105
  },
  {
                   1,                 0,                 0
  },
  {
                   1,  -0.5042239804344,   0.7467529818319
  },
  {
                   1,                 0,                 0
  },
  {
                   1,  -0.4655930375754,   0.6129261166919
  },
  {
                   1,                 0,                 0
  },
  {
                   1,  -0.4332594493028,   0.5009148004516
  },
  {
                   1,                 0,                 0
  },
  {
                   1,  -0.4060974638015,   0.4068191584195
  },
  {
                   1,                 0,                 0
  },
  {
                   1,  -0.3832377985625,   0.3276277871851
  },
  {
                   1,                 0,                 0
  },
  {
                   1,   -0.364003366837,   0.2609950956152
  },
  {
                   1,                 0,                 0
  },
  {
                   1,  -0.3478633122038,   0.2050820695564
  },
  {
                   1,                 0,                 0
  },
  {
                   1,  -0.3343997327453,   0.1584409963872
  },
  {
                   1,                 0,                 0
  },
  {
                   1,   -0.323283349731,   0.1199311754922
  },
  {
                   1,                 0,                 0
  },
  {
                   1,  -0.3142555879747,  0.08865684031782
  },
  {
                   1,                 0,                 0
  },
  {
                   1,  -0.3071153338119,  0.06392128482276
  },
  {
                   1,                 0,                 0
  },
  {
                   1,  -0.3017091726879,  0.04519304414004
  },
  {
                   1,                 0,                 0
  },
  {
                   1,  -0.2979242752065,   0.0320812501397
  },
  {
                   1,                 0,                 0
  },
  {
                   1,  -0.2956833573402,  0.02431817238647
  },
  {
                   1,                 0,                 0
  },
  {
                   1,  -0.1474706628275,                 0
  },
  {
                   1,                 0,                 0
  }
};

const double x[] = {0.5376671552658081,1.833885073661804,-2.258846759796143,0.862173318862915,0.318765252828598,-1.307688355445862,-0.4335920214653015,0.3426244556903839,3.578397035598755,2.769437074661255,-1.349886894226074,3.034923553466797,0.7254042029380798,-0.06305487453937531,0.71474289894104,-0.2049660533666611,-0.1241443455219269,1.489697575569153,1.409034490585327,1.417192459106445,0.671497106552124,-1.207486867904663,0.7172386646270752,1.630235314369202,0.4888937771320343,1.034693002700806,0.7268851399421692,-0.3034409284591675,0.2938714623451233,-0.7872828245162964,0.8883956074714661,-1.147070050239563,-1.068870425224304,-0.80949866771698,-2.944284200668335,1.438380241394043,0.325190544128418,-0.7549282908439636,1.370298504829407,-1.711516380310059,-0.1022424474358559,-0.2414470463991165,0.3192067444324493,0.3128586113452911,-0.8648799061775208,-0.03005129657685757,-0.1648790240287781,0.627707302570343,1.093265652656555,1.109273314476013,-0.8636528253555298,0.07735908776521683,-1.214117050170898,-1.113500714302063,-0.006849328055977821,1.532630324363709,-0.7696658968925476,0.3713788092136383,-0.225584402680397,1.117356181144714,-1.089064240455627,0.03255746513605118,0.5525270104408264,1.100610256195068,1.544211864471436,0.08593112975358963,-1.491590261459351,-0.7423018217086792,-1.06158173084259,2.350457191467285,-0.6156018972396851,0.7480767965316773,-0.1924185156822205,0.8886104226112366,-0.7648492455482483,-1.402269005775452,-1.422375917434692,0.4881938993930817,-0.1773751527070999,-0.1960534900426865,1.419310092926025,0.2915843725204468,0.1978110522031784,1.587699055671692,-0.8044659495353699,0.6966243982315064,0.8350881934165955,-0.2437151372432709,0.2156700789928436,-1.165843963623047,-1.147952795028687,0.1048747152090073,0.7222540378570557,2.585491180419922,-0.6668906807899475,0.1873310208320618,-0.08249442279338837,-1.933022975921631,-0.4389661550521851,-1.794678807258606,0.840375542640686,-0.888032078742981,0.1000928357243538,-0.5445289015769959,0.3035207986831665,-0.6003265380859375,0.4899653196334839,0.7393631339073181,1.711887836456299,-0.1941235363483429,-2.138355255126953,-0.8395887613296509,1.354594349861145,-1.072155237197876,0.9609538912773132,0.1240497976541519,1.436696648597717,-1.960899949073792,-0.1976982206106186,-1.207845449447632,2.908008098602295,0.8252189159393311,1.378971934318543,-1.058180212974548,-0.4686155915260315,-0.2724694013595581,1.098424673080444,-0.2778719365596771,0.7015414834022522,-2.05181622505188,-0.3538500070571899,-0.8235865235328674,-1.577057003974915,0.5079746246337891,0.2819840610027313,0.03347988054156303,-1.333677887916565,1.127492308616638,0.3501794040203095,-0.299066036939621,0.02288979291915894,-0.2619954347610474,-1.75021231174469,-0.2856509685516357,-0.8313665390014648,-0.9792063236236572,-1.156401634216309,-0.533557116985321,-2.002635717391968,0.9642294049263001,0.520060122013092,-0.02002785168588162,-0.03477108478546143,-0.7981635928153992,1.018685340881348,-0.1332174837589264,-0.7145301699638367,1.351385712623596,-0.2247710525989533,-0.5890290141105652,-0.29375359416008,-0.8479262590408325,-1.120128273963928,2.525999784469605,1.655497550964356,0.3075351715087891,-1.257118344306946,-0.8654680252075195,-0.176534116268158,0.7914160490036011,-1.332004427909851,-2.329867124557495,-1.449097275733948,0.3335108458995819,0.3913536071777344,0.4516794085502625,-0.1302846521139145,0.1836891025304794,-0.4761530160903931,0.8620216250419617,-1.36169445514679,0.4550295472145081,-0.8487094044685364,-0.3348869383335114,0.5527833700180054,1.039090633392334,-1.11763870716095,1.260658740997315,0.6601431369781494,-0.06786555051803589,-0.1952212005853653,-0.2176063507795334,-0.3031076192855835,0.02304562367498875,0.0512903556227684,0.826062798500061,1.526976704597473,0.4669144451618195,-0.209713339805603,0.6251903772354126,0.1832272559404373,-1.029767513275147,0.9492218494415283,0.3070619106292725,0.1351749449968338,0.5152463316917419,0.2614063322544098,-0.9414857625961304,-0.1623376756906509,-0.1460546404123306,-0.5320113897323608,1.682103633880615,-0.8757293224334717,-0.4838150441646576,-0.712004542350769,-1.174212336540222,-0.19223952293396,-0.2740702331066132,1.530072569847107,-0.2490247488021851,-1.064213395118713,1.60345733165741,1.234679102897644,-0.2296264469623566,-1.506159663200378,-0.4446278214454651,-0.1559410393238068,0.276068240404129,-0.2611636519432068,0.4434219002723694,0.3918942213058472,-1.250678896903992,-0.9479609131813049,-0.7411060929298401,-0.5078175663948059,-0.3205755054950714,0.01246904116123915,-3.02917742729187,-0.4570146501064301,1.242448449134827,-1.066701412200928,0.9337281584739685,0.3503209948539734,-0.02900576405227184,0.1824521720409393,-1.565055966377258,-0.08453948050737381,1.603946328163147,0.09834777563810349,0.0413736142218113,-0.7341691255569458,-0.03081372939050198,0.2323470115661621,0.4263875484466553,-0.3728087544441223,-0.2364545911550522,2.023690938949585,-2.25835394859314,2.229445695877075,0.337563693523407,1.000060796737671,-1.664164423942566,-0.590034544467926,-0.2780641615390778,0.4227156937122345,-1.670200705528259,0.4716343283653259,-1.212847232818604,0.06619004905223846,0.6523559093475342,0.3270599544048309,1.082633495330811,1.006077170372009,-0.6509077548980713,0.2570561468601227,-0.9443777799606323,-1.321788549423218,0.92482590675354,4.984907354810275e-005,-0.05491891503334045,0.9111272692680359,0.5945836901664734,0.3502011597156525,1.250251173973084,0.9297894835472107,0.2397632598876953,-0.6903610825538635,-0.6515536308288574,1.192101836204529,-1.611830353736877,-0.02446193620562553,-1.94884717464447,1.020498037338257,0.8617163300514221,0.001162083470262587,-0.07083721458911896,-2.486284017562866,0.5811723470687866,-2.192435026168823,-2.319280385971069,0.07993371039628983,-0.9484809637069702,0.4114906191825867,0.676977813243866,0.8577325344085693,-0.6911591291427612,0.4493776261806488,0.1006333529949188,0.8260700106620789,0.5361570715904236,0.8978884220123291,-0.1319378614425659,-0.1472014635801315,1.007773399353027,-2.123655557632446,-0.504586398601532,-1.270594477653503,-0.382584810256958,0.648679256439209,0.8257271647453308,-1.014943599700928,-0.4710699021816254,0.1370248794555664,-0.2918633818626404,0.3018185496330261,0.3999309539794922,-0.9299615621566773,-0.1768302619457245,-2.132094621658325,1.145361661911011,-0.6290907859802246,-1.203850030899048,-0.2539446949958801,-1.428646922111511,-0.02085761725902557,-0.5606650114059448,2.177778720855713,1.138465404510498,-2.496886491775513,0.4413269460201263,-1.398137927055359,-0.2550551891326904,0.1644040793180466,0.747734010219574,-0.2730469405651093,1.576300144195557,-0.4809371531009674,0.3275121152400971,0.6647341251373291,0.08518858999013901,0.880952775478363,0.323213130235672,-0.7841461896896362,-1.805373311042786,1.858592987060547,-0.6045300960540772,0.1033597216010094,0.5631669759750366,0.113596998155117,-0.9047262072563171,-0.4677145779132843,-0.1248899474740028,1.478958487510681,-0.860815703868866,0.7846684455871582,0.3086231350898743,-0.233860045671463,-1.056972742080689,-0.284140944480896,-0.08669028431177139,-1.469395041465759,0.1921822428703308,-0.8222932815551758,-0.09424059092998505,0.3362133502960205,-0.9046540856361389,-0.2882563471794128,0.350062757730484,-1.835859179496765,1.035975933074951,2.424461126327515,0.9594005346298218,-0.3157719969749451,0.42862269282341,-1.035984754562378,1.877865433692932,0.9407044053077698,0.7873457670211792,-0.8758742809295654,0.3199491202831268,-0.5582942962646484,-0.3114294111728668,-0.5700098872184753,-1.025733590126038,-0.9087455868721008,-0.2098973393440247,-1.698864102363586,0.6076005697250366,-0.1177982911467552,0.6991603374481201,0.2696486413478851,0.4942870438098908,-1.483121037483215,-1.020264387130737,-0.4469950199127197,0.1096585914492607,1.12873649597168,-0.289963036775589,1.261550664901733,0.4754248261451721,1.174116730690002,0.1269470751285553,-0.6568159461021423,-1.481399059295654,0.1554889976978302,0.8185513615608215,-0.2925881445407867,-0.5407864451408386,-0.3086418211460114,-1.096593260765076,-0.4930098056793213,-0.1807393580675125,0.04584110528230667,-0.06378311663866043,0.6113352179527283,0.1093176901340485,1.814015507698059,0.3120238184928894,1.80449378490448,-0.7231214642524719,0.5265470147132874,-0.2602508664131165,0.6001425385475159,0.5939307808876038,-2.186021566390991,-1.327043175697327,-1.44101357460022,0.4018445014953613,1.470201253890991,-0.3268142342567444,0.8123230338096619,0.5455400943756104,-1.051632285118103,0.3974669873714447,-0.7518947124481201,1.516266942024231,-0.03256651014089584,1.63599967956543,-0.4250584840774536,0.5894333720207214,-0.06279122829437256,-2.021958827972412,-0.9821315407752991,0.6125112771987915,-0.05488612875342369,-1.11873197555542,-0.6263785362243652,0.2495177388191223,-0.9930189847946167,0.9749502539634705,-0.6407095193862915,1.808862566947937,-1.079866290092468,0.1991894394159317,-1.521026611328125,-0.7236311435699463,-0.5932503342628479,0.4013363420963287,0.9421333074569702,0.3004859685897827,-0.3730706572532654,0.8154885172843933,0.7988870143890381,0.120205283164978,0.5712476372718811,0.4127960205078125,-0.9869619011878967,0.7595683336257935,-0.6572012901306152,-0.6039184927940369,0.1769468188285828,-0.3075034618377686,-0.1318203508853912,0.5953576564788818,1.046832799911499,-0.1979586333036423,0.3276781737804413,-0.2383015006780624,0.2295968979597092,0.4399979114532471,-0.6168659329414368,0.2748367786407471,0.6011020541191101,0.09230794757604599,1.729841351509094,-0.6085574626922607,-0.7370597720146179,-1.749879360198975,0.9104825854301453,0.8670825362205505,-0.0798928365111351,0.8984760046005249,0.1837034225463867,0.2907901406288147,0.1129447147250176,0.4399521946907044,0.1016624420881271,2.787335157394409,-1.166665077209473,-1.854299068450928,-1.140681147575378,-1.093343496322632,-0.4336093068122864,-0.1684698760509491,-0.2185335606336594,0.5413344502449036,0.3892661929130554,0.7512289881706238,1.778255939483643,1.223062515258789,-1.283256053924561,-2.328954458236694,0.9019314646720886,-1.835638642311096,0.06675691157579422,0.03547948598861694,2.227168083190918,-0.06921425461769104,-0.5073230862617493,0.2358096688985825,0.2458048462867737,0.07004521042108536,-0.6085805296897888,-1.222593426704407,0.3165003657341003,-1.342869281768799,-1.032184362411499,1.331215858459473,-0.4189032018184662,-0.1403217166662216,0.8998223543167114,-0.3001109957695007,1.029365658760071,-0.3450659811496735,1.012801885604858,0.629334568977356,-0.213015079498291,-0.8656973242759705,-1.043108344078064,-0.2700688242912293,-0.4381413459777832,-0.4086743295192719,0.9835452437400818,-0.2976971566677094,1.143678903579712,-0.5316201448440552,0.9725657105445862,-0.5222504734992981,0.1765777915716171,0.9707378149032593,-0.4139722883701325,-0.4382705092430115,2.003390550613403,0.9509934782981873,-0.4320038557052612,0.6489407420158386,-0.3600763082504273,0.7058849930763245,1.415849089622498,-1.604515671730042,1.028853058815002,1.457967758178711,0.04747132211923599,1.746256709098816,0.1553875207901001,-1.237119674682617,-2.193494319915772,-0.333407074213028,0.7135432958602905,0.3174077272415161,0.4136103987693787,-0.577085554599762,0.1440017968416214,-1.638665676116943,-0.7600899934768677,-0.8187931180000305,0.5197288990020752,-0.01416005939245224,-1.155529379844666,-0.009524916298687458,-0.6898105144500732,-0.6666991710662842,0.8641493916511536,0.1134194359183312,0.3983628451824188,0.8839699029922485,0.1802576929330826,0.550854504108429,0.6829642653465271,1.170608639717102,0.475860595703125,1.412232637405396,0.02260848507285118,-0.04786941036581993,1.701334595680237,-0.5097117424011231,-0.002854960039258003,0.9198670983314514,0.1498087346553803,1.404933452606201,1.034121513366699,0.2915702760219574,-0.7776985168457031,0.5666961073875427,-1.382621169090271,0.2444746792316437,0.808438777923584,0.2130416929721832,0.8796771764755249,2.038876295089722,0.9239324331283569,0.2669174373149872,0.641661524772644,0.4254853427410126,-1.314723491668701,-0.4164112210273743,1.224687814712524,-0.04358420521020889,0.5824232697486877,-1.006500124931335,0.06451674550771713,0.6002919673919678,-1.361514925956726,0.3475926220417023,-0.1818432211875916,-0.9395347833633423,-0.03753319010138512,-1.896304488182068,-2.127976655960083,-1.176923274993897,-0.9905322194099426,-1.173032283782959,-1.725427746772766,0.2882280945777893,-1.594183683395386,0.1102188527584076,0.7870666980743408,-0.002226786222308874,0.09310875833034515,-0.3781570494174957,-1.482676148414612,-0.04381858557462692,0.9608252048492432,1.738244891166687,-0.4302062392234802,-1.627322793006897,0.1663474887609482,0.3762659132480621,-0.226950466632843,-1.148912310600281,2.024332523345947,-2.35952353477478,-0.5099720358848572,-1.321625590324402,-0.6361282467842102,0.3178514242172241,0.1380479782819748,-0.7107350826263428,0.7770035266876221,0.6223939061164856,0.6473808884620667,-0.4256316721439362,1.048580765724182,0.6607071161270142,2.508772373199463,1.063459634780884,1.156921625137329,0.05297882854938507,-1.288385987281799,-0.3712212443351746,-0.7577919363975525,-0.5639688968658447,0.5551385879516602,-0.5567780733108521,-0.8951131105422974,-0.4093277156352997,-0.1608867645263672,0.4093344211578369,-0.9526360034942627,0.3173174858093262,0.07802008092403412,1.324385404586792,-0.2131704837083817,-0.1344786435365677,-1.171355843544006,-1.385262727737427,0.3105083107948303,-0.2494890689849854,0.5037440657615662,-0.8926613926887512,1.908512353897095,0.12223070114851,1.047033309936523,-0.2269202023744583,-0.1625019460916519,0.6900519132614136,0.5557567477226257,-1.120254993438721,-1.532693028450012,-1.097867727279663,-1.415773272514343,0.05957058817148209,-0.4112509191036224,-0.3680107295513153,-1.360963106155396,0.7795674204826355,0.4394111037254334,-0.08962248265743256,1.021180152893066,-0.8739794492721558,0.4147002995014191,0.3484412133693695,0.3492544293403626,-0.7292472720146179,0.3268402516841888,-0.5148816108703613,-0.896446168422699,-1.203268170356751,1.037815690040588,-0.8459442257881165,-0.1729138493537903,-1.208652019500732,-0.2971267998218536,-3.232037782669067,-1.08695924282074,-1.426436185836792,-1.014450788497925,-0.2132671922445297,-0.3253477811813355,1.944397807121277,-0.5717732310295105,-0.2500322759151459,-1.569315433502197,-0.4773826599121094,-1.337976694107056,0.03029902465641499,0.8530867695808411,0.4042534530162811,-0.7006202340126038,-1.630542874336243,1.460013151168823,2.050042629241943,0.1205006018280983,-0.989901602268219,1.197771430015564,-0.5926561951637268,-0.469809353351593,0.8863773941993713,-1.385219812393189,-1.956753969192505,0.4206837117671967,0.400738000869751,0.09514215588569641,0.4966844022274017,1.082240581512451,0.9704477787017822,-0.568569540977478,0.8099720478057861,0.173247367143631,-0.5055425763130188,-1.193305850028992,0.6469709277153015,-0.3536225855350494,0.04643452540040016,-0.79294753074646,-1.550514459609985,0.171586349606514,-0.0621391236782074,1.199027895927429,0.8017040491104126,1.053304553031921,-0.7488767504692078,-0.9363265037536621,-1.269086718559265,0.4979806244373322,2.78908109664917,0.7275720238685608,-0.7730640769004822,0.8366337418556213,-1.12833034992218,-1.424470067024231,0.7174423336982727,-0.7779055237770081,0.3159858882427216,1.406535148620606,0.4011246263980866,0.9296602606773377,-1.605802178382874,0.6615362167358398,2.138502359390259,0.5411394238471985,-1.540877223014832,-0.2031427919864655,-0.4999652206897736,0.3830239176750183,0.4120353758335114,0.4054925441741943,-0.3637807369232178,-0.5992720127105713,-0.58958899974823,0.85354083776474,-1.853008031845093,-0.2073031663894653,0.2703782021999359,-0.65277099609375,0.4772272706031799,-0.07131964713335037,-0.9383012652397156,0.1613635420799255,-0.2681828737258911,-0.4098726511001587,-0.7113227248191834,0.06144548207521439,-1.846129179000855,-0.3983331322669983,-0.5435481071472168,-0.9118984937667847,0.6526985764503479,-0.7342712879180908,0.5406330823898315,0.9758408665657044,-0.1568704098463059,0.2777993083000183,0.6395173072814941,-0.08097801357507706,0.5408701300621033,-1.262564897537231,1.110423803329468,-0.9895626902580261,-1.828835964202881,1.384498476982117,-0.06272679567337036,0.4489211142063141,-0.3632584810256958,-1.020583391189575,-3.072988510131836,0.6262789964675903,-0.2866845428943634,-0.1973429024219513,0.4056053757667542,-1.419348478317261,-0.729445219039917,1.147327899932861,0.5978646278381348,-1.281281232833862,-2.203264236450195,-0.571246325969696,0.213996484875679,0.9423769116401672,0.09372548758983612,-1.12231171131134,0.3061578273773193,-1.172334909439087,-0.9609665870666504,-0.6537350416183472,-1.229393601417542,-0.2709651291370392,-0.8999500870704651,-0.2856861352920532,-0.4624215364456177,-0.4097852110862732,-0.503538966178894,1.233297109603882,0.6103051900863648,0.05907215550541878,-1.466946721076965,-1.625803232192993,-1.964752435684204,2.605195760726929,0.9723747968673706,0.2569809556007385,-0.9742404818534851,-1.146364331245422,0.5476394891738892,1.565083980560303,-1.693343639373779,-0.4493973553180695,-0.08429206907749176,-1.991997122764587,0.8412456512451172,-0.4146589040756226,1.912180781364441,-0.390898734331131,0.409182071685791,-1.142428159713745,-0.6248638033866882,-1.168722867965698,0.3925752937793732,1.301839470863342,-0.5936417579650879,0.4363753795623779,-0.5043624639511108,0.1021077111363411,1.196250557899475,0.1202828139066696,-1.036843419075012,-0.8571032285690308,-0.1698743104934692,-0.1916682869195938,-0.8658152222633362,0.180664137005806,1.266528487205505,-0.2511692941188812,-0.2045700550079346,-2.201521873474121,-0.7745131254196167,-1.393272638320923,-0.3862346410751343,0.5255863666534424,1.523269295692444,1.798494458198547,-0.1168842688202858,-0.3201961815357208,0.8175162672996521,0.4901591837406158,0.7652511596679688,0.7782790660858154,-1.480305194854736,0.5403639674186707,-0.09153902530670166,-0.7602523565292358,-0.6935954689979553,1.281457781791687,-0.8097376227378845,-1.236818313598633,0.2146864533424377,2.010771751403809,0.02555443346500397,0.3082994222640991,-0.9382472038269043,1.674215912818909,0.1249881759285927,0.5301012396812439,-0.9520682096481323,0.8540428280830383,0.3891457319259644,-1.156001091003418,0.03974012657999992,-0.4505985975265503,0.1092479452490807,-0.2505528330802918,-0.1899016499519348,-1.032913565635681,-0.3232919275760651,0.7665268778800964,1.744673132896423,-1.160519957542419,2.377411842346191,1.52607798576355,0.1685075014829636,-0.3012065291404724,-0.6986542940139771,0.832770586013794,-0.6946052312850952,-0.4618829786777496,0.8836171627044678,0.4359441697597504,0.896747350692749,0.5047320127487183,-0.4008971452713013,-0.5138480067253113,0.7963675856590271,-0.6711901426315308,1.186659097671509,0.7907019853591919,0.2877214848995209,0.003226114669814706,0.36561718583107,3.526677846908569,-0.1124366596341133,-1.556593894958496,1.915102243423462,0.6098460555076599,-0.6479116082191467,2.617334842681885,0.5509504079818726,0.2942036986351013,-0.7778437733650208,-1.064930081367493,-1.76841402053833,-0.4229195415973663,-1.053102374076843,0.6477552652359009,-0.3176281750202179,1.768991589546204,1.510582447052002,0.1640103161334992,-0.2827637195587158,1.152165770530701,-1.146507620811462,0.6736987233161926,-0.6691129803657532,-0.4003227055072784,-0.6718024015426636,0.5756289958953857,-0.7780935168266296,-1.063561201095581,0.5529782772064209,-0.4234288334846497,0.3615871667861939,-0.3518892526626587,0.2695406973361969,-2.564449310302734,0.4658641219139099,1.853560924530029,1.039289355278015,0.9108965992927551,-0.2397312819957733,0.1809980869293213,0.244249552488327,0.09639288485050201,-0.830468475818634,-0.352252185344696,-0.1747750341892242};
const double y[] = {4.901631884445604e-011,1.969846451468608e-009,3.816477958616122e-008,4.751413580840868e-007,4.272833714964882e-006,2.956793914780073e-005,0.0001637187293940211,0.0007443151638784579,0.002827497550593863,0.009080118553741126,0.02482114745042996,0.05789327603964091,0.1148851232815811,0.191944303266122,0.2634903629022839,0.2805219235807636,0.1934968144519685,0.001164571690483146,-0.2036803034347511,-0.243051317693879,0.05235799930948104,0.7035515425905066,1.50264446949213,2.08339616499433,2.129410153865133,1.58791211614804,0.7318751569797165,0.01079428126943477,-0.2223628975696179,0.07199171248403351,0.6145677934332827,1.027364302590458,1.113303504726158,0.9576946372956696,0.7657492447824804,0.6251848613562219,0.4757799439769402,0.3100300901685692,0.2953671313797039,0.5677554224846596,0.9155676203133129,0.8467197501821462,0.1237003648521538,-0.829473334426293,-1.258506573044403,-0.9014872397056672,-0.3358445276637098,-0.3307858103779167,-0.9028785569425561,-1.241444053631355,-0.6778940894361393,0.4347614770738515,1.030363799672865,0.5131029105434659,-0.5646493004683777,-1.113421390424555,-0.6719141472869565,0.1973853214660767,0.6304659740992971,0.3813809562749558,-0.05934406988791282,-0.1196103449977499,0.2535179638344982,0.6274705506290741,0.5622282210070941,-0.003128090734528993,-0.7256766692110445,-1.108438632705972,-0.8381954117846828,-0.0395066067227636,0.748312500485855,0.9558881905362535,0.4774944529882093,-0.203618905322687,-0.450424952407662,-0.06731743431542961,0.5545700172297235,0.8703197688017816,0.691128335948064,0.2421659773369904,-0.1814643184817401,-0.4694413261360592,-0.5972809228532114,-0.4476584860590024,0.07438340584266737,0.7370388083134442,0.9806309140704053,0.4138144126696007,-0.6766731783472324,-1.457548941420241,-1.308144940822079,-0.423658736142729,0.4206843926099949,0.6893304585605964,0.5563605455292358,0.52392715266646,0.7252919990138866,0.8022954237314979,0.4685984086738604,-0.03315802986365317,-0.2161946486757557,-0.000659116233105092,0.1611732606616704,-0.1095690961468543,-0.5652382441299352,-0.5798145047209768,0.07899041931192433,0.9051207275264468,1.150357022370669,0.5591895172496795,-0.4622381810632034,-1.294429915861175,-1.573098198652625,-1.278695481501472,-0.6113005678513859,0.0866296189129564,0.4301327416960231,0.2569479763421299,-0.1567192603477502,-0.2962284371619595,0.06369121708582418,0.5878775739182425,0.7271518653154619,0.3022686133746249,-0.3431363024753577,-0.7370588596237497,-0.6944835759812365,-0.3262344794195499,0.1809068913985718,0.6277410715974917,0.744135892610881,0.3427156348962501,-0.3452361579718603,-0.6661137305270126,-0.1331207615124057,0.9457152479374809,1.612899558776554,1.179465503708522,-0.04372065266742192,-1.030988130762396,-1.049109020169033,-0.3143830661712695,0.3216379339431881,0.2219256001880287,-0.5206789397310805,-1.268410038875823,-1.404859533618512,-0.7885676856318855,0.1636617996435873,0.7788218624743937,0.647564655451858,-0.01383670261080977,-0.5436928461056486,-0.4874579886425848,-0.08137870493125202,0.00989168725833027,-0.5340938157312701,-1.289055402864073,-1.551039247453405,-1.129732114651531,-0.5287641549555113,-0.3206857958290819,-0.4955196193149997,-0.551720802550139,-0.1628027634132513,0.4151469770539423,0.6510522270440324,0.34548170240539,-0.1701008602149334,-0.407725213799653,-0.2061207431244717,0.1666504878191909,0.3147078385778042,0.07910501743536319,-0.3392801817589539,-0.5503287645321433,-0.2884648618260385,0.3534342388645316,0.9492162480136944,1.034069459972465,0.4585358537693943,-0.4832131398516383,-1.25887468926475,-1.472328194499848,-1.124852699284753,-0.5846042307163586,-0.2846568128379211,-0.354069098659955,-0.4885915844897714,-0.2524111701242439,0.394165446163863,0.9052868562675396,0.6510480308871651,-0.3154967610896568,-1.136711280765892,-0.9902915345229689,-0.02902252696927693,0.7348278538547617,0.5786593814217398,-0.09124649432839087,-0.2752145391724367,0.3372444510583774,0.9570700983762777,0.7055255500893589,-0.2375062883172752,-0.8290232176449455,-0.448306188170038,0.3888470426836526,0.7687201125916459,0.5372558562875461,0.3496529489566166,0.6340395521334786,0.9498924181016302,0.627117713022923,-0.2171603167475343,-0.7109937350152691,-0.3052664149368126,0.5212700728169597,0.8451458123534092,0.3911798218276269,-0.2485816259977615,-0.4421447978456047,-0.2366914827807877,-0.1025027082051579,-0.2057600816836826,-0.258783016381536,-0.07379185636030715,0.0612922996354742,-0.2298991911984855,-0.7956391626234135,-1.003721917744614,-0.4663610119463997,0.4557911757664351,1.006494382530453,0.8207175864425844,0.2326959005513447,-0.1784620063859479,-0.2055984139188944,-0.1105247867880183,-0.2030231289615536,-0.4558400981980956,-0.5628819404014667,-0.3151222659781248,0.126745528735815,0.3327223520319703,-0.008910499487922885,-0.7578657256769927,-1.371903155660029,-1.365097816228894,-0.7850354928347133,-0.204887456620314,-0.1583043634212258,-0.568681398022122,-0.8156544456986886,-0.4187681947905039,0.3994501407531642,0.9136113626082747,0.6518904727761343,-0.1199776140316625,-0.6886939749982202,-0.5977750115416588,-0.01806439539070429,0.5123036164007515,0.6047563142943421,0.2783926206426043,-0.1636954987624288,-0.4020798274720592,-0.2862926316409542,0.1041628943337913,0.5064841037650805,0.6435130498249138,0.4495260132046929,0.1453550134708772,0.02227363924658051,0.1123194135668714,0.1255083094442485,-0.212659687375293,-0.7754450748170231,-1.082684871962456,-0.7984525651125197,-0.1349094204737344,0.3368714986834036,0.3004683436843713,0.03644963334438209,0.07356530427469547,0.5310982478115085,0.9238598409381444,0.6879595122193495,-0.1532043635298992,-0.9437358115709587,-1.033982576555199,-0.4023283297773909,0.3927287903870732,0.8127944115661503,0.8008748045209612,0.6634448442240746,0.6306636034999815,0.6434250451572998,0.5322539364647843,0.264233644622012,-0.0541176952848258,-0.3354521184382176,-0.5606463031749591,-0.6830599273197916,-0.6049173069257399,-0.3179845190221518,-0.002709593184279255,0.1082844704169726,-0.04324323016914511,-0.3312534424127449,-0.6601789660026236,-1.06620830624794,-1.518044564987826,-1.717614923251577,-1.302832504680364,-0.3201436289663597,0.6449640969904319,0.9725701168124443,0.6317412271719721,0.1748699444401873,0.09376371882754649,0.3229798284775143,0.4682232370919689,0.3827876951807104,0.2919581092515706,0.3428976351496577,0.2869898527075677,-0.1880056606326973,-0.9143844424528556,-1.295221810909053,-0.9732437503749082,-0.2691691338974025,0.1937333902806002,0.1915510626778779,0.02835520848282434,-0.0001497018025234144,-0.003903963229282822,-0.2148199941112326,-0.5045058144990404,-0.4890732422478814,-0.1297393011700764,0.06617045594378471,-0.3419349409709044,-1.059069121186257,-1.296786276692397,-0.7321980229395977,0.03223586814373991,0.1708246428832928,-0.3346351168349008,-0.6558005369044803,-0.170428016971531,0.6931081507924666,0.899932633373326,0.03964848080637773,-1.126122586706571,-1.447327707526438,-0.587692939815433,0.6851111198001979,1.34066491582211,1.056525412262898,0.3458800460502616,-0.09710416302883287,-0.03149761757166121,0.2763176853175713,0.4336438398950315,0.2686686032034757,-0.1038512941175529,-0.4243327437714211,-0.4754821176781192,-0.2194366377941753,0.1697409085911978,0.412408929323309,0.3222483860486334,-0.04219842178244287,-0.4016830051683433,-0.4558945093141814,-0.1212968528759076,0.3734071937760415,0.6329132004405922,0.4035534798475526,-0.1985579917444407,-0.7641144509022811,-0.9379880953326695,-0.719131979866892,-0.4129407464629628,-0.2933821511058602,-0.347382522725242,-0.3677360124012374,-0.2464744777514284,-0.09809436561301656,-0.07753685934467208,-0.1443187260045571,-0.07871311106658584,0.26653967078066,0.7742718133491466,1.137749090058928,1.110428793712979,0.6960513880655322,0.1532725219444508,-0.1599208610918885,-0.02518229914134934,0.4288098866913657,0.737719855015303,0.4466601430904184,-0.4233127149076201,-1.272928446008669,-1.430414882885291,-0.8389717242586644,-0.1607003049981316,-0.08203233553866812,-0.543343213473427,-0.803153751011825,-0.3233285648747096,0.5426633732311904,0.9009065246206223,0.3263493523216627,-0.6499613465852934,-1.128596112334946,-0.7754543977162743,-0.0268534072585388,0.5406641383209421,0.7921378125416253,0.9080143397884746,0.9115506224514494,0.6062847733882706,-0.0186158240992427,-0.5840155749882658,-0.6955270167457985,-0.4117780176403908,-0.1503896838393846,-0.1567110345357913,-0.2698445735668078,-0.2740327763440761,-0.265062779103222,-0.4510242175608352,-0.6840271784611451,-0.497154667084181,0.269185936385841,1.093934833146562,1.282366584910298,0.7984449009948433,0.3276270589218122,0.4175934124766866,0.7799590890175767,0.6795738457334974,-0.07503515508925601,-0.8384439443997708,-0.9321374898975336,-0.4985635444685617,-0.2796252449667683,-0.6017199710680889,-0.9006053548726203,-0.436817667974077,0.6819674586405288,1.474190678551866,1.141123739563529,-0.02067483727265718,-0.9006003550139493,-0.7100615643895015,0.2815752602166831,1.123876111151341,1.148881305145173,0.4861224371294977,-0.2652249647273991,-0.6860328983729715,-0.7982462730404371,-0.8057134032290967,-0.7606681034233223,-0.5647429653708664,-0.2231444502107696,0.04387640487493037,0.01952065125032069,-0.2194889332366236,-0.3306914327945764,-0.08201188364827607,0.3331079187593969,0.4383928296018878,-0.02309624178444417,-0.7579240152023411,-1.148023009290471,-0.8264647034188166,-0.01398468208507794,0.7125184797823547,0.9459332803785101,0.7310723285037473,0.3938976753273595,0.1948504358865336,0.1717949031849143,0.2239494913654431,0.2354439430515565,0.1204985713944314,-0.1405323112507946,-0.434977826472225,-0.5419497896367569,-0.3245340614593799,0.08863124374761358,0.3916489087090629,0.4147348662936334,0.2937318548175962,0.2656693125669187,0.3432435037144663,0.3066033643637647,0.04211976346580036,-0.2285051329920221,-0.1742986416123577,0.2205750012664497,0.5870350589490888,0.5739579579284129,0.229296073034954,-0.1085192430056028,-0.2361990526305172,-0.2549032150068097,-0.2892294734795681,-0.2040098008621235,0.2196142109403994,0.8517365684664846,1.168444719564555,0.7949380935643986,0.02590858035836541,-0.3886655595449295,-0.05953499746012217,0.546146780178677,0.5634223616286387,-0.3164230059616036,-1.458415354333469,-1.899759008947311,-1.285618698144285,-0.1350012967852382,0.7482368178328047,0.9969602023842099,0.8190084957881665,0.5897571225572362,0.4583364011156254,0.3179656425323609,0.0115962841265333,-0.4884315899237178,-1.007192157977661,-1.201032592526722,-0.765782300069505,0.2243409109118922,1.181681842897794,1.388936955989632,0.6685583631321871,-0.3711449467977578,-0.8898126862467957,-0.6410635848621863,-0.1602296454423374,-0.1045679711225361,-0.5202372780703896,-0.8653243755695467,-0.6867140587531889,-0.1064211271382287,0.3978494900382853,0.5429273994526374,0.4423499794047261,0.3365376000088705,0.303523265691397,0.2829099729468475,0.2418532820129552,0.1829238675192878,0.03898448601069829,-0.2833683208055008,-0.7051844360863964,-0.9269622681957301,-0.6913492319445508,-0.08473082565468662,0.4995338120947689,0.7189535926888133,0.5636134348207462,0.2821821812678613,0.1006915002153183,0.06640255289436821,0.1187361118429826,0.2125385123490222,0.3362984873849255,0.4661145665702196,0.5621878160730052,0.6028762610028564,0.5835516559812668,0.4883445425534731,0.3125549402620449,0.130921752965015,0.09335944338679053,0.2896507551043284,0.6145992197242711,0.8182494813039341,0.7248003716102772,0.3832210058276027,-0.02393266215741835,-0.3867708686169969,-0.7097920039254323,-0.9377099541895766,-0.8527428222189771,-0.2976420815419117,0.4715228890153306,0.8091410551412966,0.2509384690866298,-0.899521706392014,-1.698824751979515,-1.432550068156961,-0.3602438613489759,0.5120235094008361,0.4471285919671715,-0.3042686795397282,-0.8473949675171122,-0.6172075107767919,0.1173131057384494,0.6915360431889213,0.7942491281659672,0.6536835037201769,0.5952372528042239,0.6497476821642052,0.6675487383124741,0.6378979521467446,0.6955895816877711,0.8394104955098232,0.8437443237308486,0.5536639099040353,0.160071351475505,0.03175353488244485,0.2831079533716469,0.6369527917049532,0.7618348497805191,0.638974019208652,0.494029733106687,0.4278428831153075,0.2773732737906136,-0.09508671830864056,-0.4871282035725013,-0.4786786143100425,0.1052212877967783,0.939514063389384,1.470846047532116,1.420672207871036,0.976750411335312,0.5149579421335919,0.2163739853405403,-0.0003409787775557477,-0.2309131478940613,-0.3830867640583467,-0.2796092887202848,0.07296077225439206,0.3979470041754742,0.3809657167660481,-0.01455931261826257,-0.4914419450403106,-0.6954961327411405,-0.5518009711348987,-0.329166574271143,-0.3779669486493257,-0.8028407428870044,-1.376058102715057,-1.748688607997758,-1.738274716684373,-1.43085491862912,-1.044820212664311,-0.7311754751904709,-0.5029709171215462,-0.3107164937229608,-0.1319522065447274,0.01890246022120143,0.1194487226088515,0.1368095915764108,0.02550848665240484,-0.2008965720641431,-0.3815575230079672,-0.2789241146392271,0.1586607414578377,0.6119698943014829,0.5959902564281706,-0.03720084289642917,-0.8281850772623539,-1.075779602668306,-0.5579282705019524,0.1636099951501728,0.2702290265297063,-0.4462443301281304,-1.310437987059983,-1.426441610329923,-0.5963881884124131,0.4873556735837605,0.9706697442671566,0.6813148128549351,0.1971343526275647,0.1466885054268578,0.5753763557409064,1.037519969958935,1.183364590504414,1.089669995215215,0.9990346120419301,0.8960116365017419,0.5071473927426715,-0.2738120416737899,-1.094095918606186,-1.392641296835122,-0.9547373920489074,-0.166324673703591,0.318002986497482,0.1640428670694287,-0.3707909156973746,-0.7195364574722325,-0.5398775537363039,0.006965474095521423,0.4588203596946837,0.4983483700229483,0.2000881950800067,-0.1298428418865671,-0.3051252068360697,-0.4042941636343038,-0.5664732978418758,-0.7112248274463501,-0.5598494669654338,0.02017076544094576,0.7485311611561247,1.113928534154987,0.8704388696761489,0.3048474647806272,-0.06040543804096748,-0.02451648485105304,0.1035480145968553,-0.09789109675463179,-0.653457268475061,-1.168014050849861,-1.287535780944653,-1.056790456937526,-0.7609793212857348,-0.5279191387586056,-0.2497953130009545,0.1120113641535635,0.3448915630383327,0.2522797039629147,0.001630105826068796,-0.01286170649305099,0.3014960535289533,0.5371728553672213,0.2778132314533227,-0.3130896928597619,-0.6285692296602088,-0.3818856611523227,-0.01005052518025954,-0.1301857921158718,-0.7130813004598808,-1.076784159224882,-0.7679338124592546,-0.2080434087971448,-0.232523980279766,-1.062384570163659,-1.98963112809397,-2.160353636458721,-1.479198030824131,-0.5790449848673616,-0.0256030631081469,0.185563460273435,0.3159709349515845,0.349778307816043,0.02572172422638114,-0.6581111996951374,-1.23377473625493,-1.193185800526078,-0.5343655811247977,0.2380304774063368,0.6188479432901972,0.5145540753515915,0.1940923454909854,-0.01613661587229807,0.05709998534082585,0.3757650600099739,0.686706031281485,0.6295338838365397,0.04414143672530935,-0.7538614171793232,-1.145761909057702,-0.8142477827674277,-0.1335155153618667,0.210631167765355,0.02174512846861823,-0.1592616381729377,0.2523273168047041,1.058095585328004,1.396245158974151,0.7563804002867671,-0.3375453517907857,-0.8724874006338196,-0.5025908519291522,0.09547396888655993,0.09827454793198495,-0.467645862279375,-0.8443416208059502,-0.5634486175892255,-0.01612098731056764,0.1407980382696902,-0.09866327811307424,-0.1022682440080491,0.4680539808461939,1.066668922024565,0.8639555484655004,-0.167531709664054,-1.057349579366238,-0.8428454408981483,0.3679728194850128,1.478054076660566,1.494398733658354,0.4279340772369025,-0.844246471305664,-1.427019368174437,-1.059958975875847,-0.1213190806173268,0.7726878185028649,1.159190527871587,0.9412191208546497,0.4035424430102534,0.0008411269873381602,-0.002497244187777407,0.2541019134724383,0.3995360544057043,0.2240964208111526,-0.1362277338367471,-0.3946078779343857,-0.4024161510042837,-0.2069941180765671,0.06895420155009027,0.2754667429677354,0.2143159188471922,-0.2265847110533598,-0.8245822517071362,-1.065456604441436,-0.6436895368039046,0.09840753569991254,0.4388010353706949,0.07348457841953993,-0.5109384311892337,-0.6231116921572235,-0.2238970948957186,0.04561462983903311,-0.2803832672135092,-0.8730618667020107,-1.049182946752425,-0.6766696100575688,-0.319922463829115,-0.4332152893197113,-0.7145072428026869,-0.5178448239650084,0.2283342164539907,0.8535611086645786,0.7751922469289444,0.2258011433545714,-0.07829320623871693,0.1360263757855268,0.4049393468109609,0.2076392104767897,-0.3328437807912102,-0.6439635620602893,-0.4670451806623885,-0.1413923782795998,-0.08540166778165588,-0.2524027103087742,-0.3057569069565106,-0.2038803190345361,-0.3110354184025544,-0.8364362027601096,-1.381261494528966,-1.288275740434449,-0.4388751400997776,0.4896069776934557,0.6795276779673596,0.02284632773980011,-0.7875304504693059,-1.007155638237927,-0.5886290633384756,-0.1389895521201397,-0.1889940211457497,-0.5999176534485449,-0.7488613003049665,-0.2840669010383743,0.384278971929239,0.4459021040663225,-0.4137791172105243,-1.550361970606605,-1.9267004290339,-1.192387747443567,-0.09685392288066552,0.2951976610744154,-0.2393286559808879,-0.8723528055023477,-0.7209988165955925,0.1204236745122498,0.7309509802006724,0.472473567439048,-0.3169491513068328,-0.8348863999241456,-0.7752823018547219,-0.4959957256842026,-0.3157003151972073,-0.0509425636647749,0.5203221650345599,1.007673839762014,0.6870005115956466,-0.4761074753409342,-1.463939579130385,-1.236504701294377,-0.02904098410162226,0.7790107127398409,0.2538287950299563,-0.9182309412061286,-1.189303639446965,-0.02632972472609785,1.356386252776564,1.35512032883511,-0.1530189166124734,-1.641269907542976,-1.641942742841175,-0.3045454559898786,0.9404184163927354,1.045979544293352,0.3251540912054796,-0.2235727434504913,-0.1666860773963363,0.07917801530216864,0.02175995031245648,-0.2743533737515618,-0.4505240998245416,-0.4326809329959452,-0.4332034863014811,-0.4780657060962195,-0.2985913098444339,0.1720075301734691,0.4632946268477726,0.03411674869694731,-0.9656157346493475,-1.679803554987761,-1.412409643728124,-0.3507866338282721,0.7093236869853056,1.222540739461281,1.262552694492745,1.103496621542627,0.7741897396999102,0.2253335836194103,-0.2737907230868065,-0.2750036670716133,0.2360904698069276,0.6385763652442462,0.3270889930098058,-0.5182406851375264,-1.055981489025311,-0.7324720375194722,0.07879859584600737,0.5283548240175201,0.2763067237952951,-0.1725614071765526,-0.1357807216905031,0.4307262505044543,0.9237734996319401,0.823610301054338,0.2608565105885363,-0.1891654065392703,-0.1586237958122889,0.1716994630433406,0.3432786021606208,0.12031671696524,-0.3131723499038527,-0.5873443797247606,-0.5130252928695345,-0.2280506713428679,-0.02772411608744245,-0.06625323119202287,-0.2097541469511287,-0.175020966417009,0.1821250567609575,0.7158722277678759,1.122780610262033,1.202252674611326,0.9717354180700626,0.5664872713650642,0.1083612776902143,-0.2955703111014351,-0.5008483045384689,-0.3846070839058824,0.01039705383982478,0.4493956887807707,0.6801823226099999,0.6298933495819679,0.4112512074262744,0.1693143830430615,-0.01937973857582654,-0.1036511227288314,-0.004849549358813814,0.3113013827899681,0.7215675785990641,0.9842304906703432,0.9494226697388932,0.7198940481961859,0.5575922555736492,0.6102606913717268,0.753089810611199,0.7362353822699848,0.4929637237864531,0.2562891245985313,0.3069888581882474,0.5911634973794068,0.6595947615784625,0.09521828590444104,-0.9605911204258328,-1.783745094990334,-1.680117403617266,-0.6584359455028964,0.5540971368694664,1.196193664623199,1.131858313484017,0.801570585676358,0.6061976468892908,0.4909292457354061,0.1797302342317684,-0.3256444181816809,-0.6669113818974775,-0.5692965633942677,-0.2120077370548155,-0.03639935049301743,-0.2277663060175365,-0.5168556484535413,-0.5309092072649919,-0.2408581050984276,0.03453877496996036,0.0297291440718319};

void dsp::test::filter_test::test_sos()
{
	float out[1024];
	dsp::filter_sos<float> sos(MWSPT_NSEC, NUM, NL, DEN, DL);
	for (size_t i = 0; i < 1024; ++i)
		out[i] = sos(x[i]);
	CPPUNIT_ASSERT(std::equal(out, out + 1024, y, dsp::within_range<float>(0.00001)));
}
